我想访问我的$范围变量在Chrome的JavaScript控制台。我怎么做呢?
我既不能看到$scope也不能看到我的模块myapp的名称在控制台中作为变量。
我想访问我的$范围变量在Chrome的JavaScript控制台。我怎么做呢?
我既不能看到$scope也不能看到我的模块myapp的名称在控制台中作为变量。
当前回答
你可以先从DOM中选择一个在你想要检查的范围内的元素:
然后你可以通过在控制台中查询以下命令来查看作用域对象:
angular.element .scope (0) ()
你可以查询范围内的任何属性,例如:
.widgets angular.element(0)美元.scope ()
或者你可以检查附在范围上的控制器:
心理图像元素(0.06美元)。范围(myControllerName美元)。
(另一种可行的方法是在代码中添加断点。如果$scope目前在当前的“普通旧JavaScript”范围内,那么你可以在控制台中检查$scope的值。)
其他回答
这是一种在没有Batarang的情况下获得瞄准镜的方法,你可以:
var scope = angular.element('#selectorId').scope();
或者如果你想通过控制器名找到你的作用域,这样做:
var scope = angular.element('[ng-controller=myController]').scope();
在你对你的模型做了更改之后,你需要通过调用以下命令将更改应用到DOM:
scope.$apply();
如果你已经安装了Batarang
然后你可以这样写:
$scope
当你在chrome的元素视图中选择了元素。 参考- https://github.com/angular/angularjs-batarang#console
我通常使用jQuery data()函数:
$($0).data().$scope
$0是当前在chrome DOM检查器中选中的项目。 1美元,2美元…等等都是之前选定的项目。
为了改进jm的回答……
// Access whole scope
angular.element(myDomElement).scope();
// Access and change variable in scope
angular.element(myDomElement).scope().myVar = 5;
angular.element(myDomElement).scope().myArray.push(newItem);
// Update page to reflect changed variables
angular.element(myDomElement).scope().$apply();
或者如果你使用jQuery,它也会做同样的事情…
$('#elementId').scope();
$('#elementId').scope().$apply();
从控制台访问DOM元素的另一种简单方法(正如jm提到的)是在“elements”选项卡中单击它,它自动被存储为$0。
angular.element($0).scope();
在Chrome的控制台:
1. Select the **Elements** tab
2. Select the element of your angular's scope. For instance, click on an element <ui-view>, or <div>, or etc.
3. Type the command **angular.element($0).scope()** with following variable in the angular's scope
例子
angular.element($0).scope().a
angular.element($0).scope().b
Chrome的控制台