我想访问我的$范围变量在Chrome的JavaScript控制台。我怎么做呢?
我既不能看到$scope也不能看到我的模块myapp的名称在控制台中作为变量。
我想访问我的$范围变量在Chrome的JavaScript控制台。我怎么做呢?
我既不能看到$scope也不能看到我的模块myapp的名称在控制台中作为变量。
当前回答
为了改进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();
其他回答
只需在作用域外定义一个JavaScript变量,并将其分配到控制器中的作用域:
var myScope;
...
app.controller('myController', function ($scope,log) {
myScope = $scope;
...
就是这样!它应该可以在所有浏览器中工作(至少在Chrome和Mozilla中测试)。
它正在工作,我正在用这个方法。
出于调试的目的,我把它放在控制器的开头。
window.scope = $scope;
$scope.today = new Date();
我是这样使用它的。
然后删除它,当我完成调试。
你可以先从DOM中选择一个在你想要检查的范围内的元素:
然后你可以通过在控制台中查询以下命令来查看作用域对象:
angular.element .scope (0) ()
你可以查询范围内的任何属性,例如:
.widgets angular.element(0)美元.scope ()
或者你可以检查附在范围上的控制器:
心理图像元素(0.06美元)。范围(myControllerName美元)。
(另一种可行的方法是在代码中添加断点。如果$scope目前在当前的“普通旧JavaScript”范围内,那么你可以在控制台中检查$scope的值。)
我使用了angular.element($(".ng-scope")).scope();在过去,它工作得很好。如果你在页面上只有一个应用范围,那就好了,或者你可以这样做:
angular.element ($ (" div [ng-controller = controllerName] ")) .scope ();或angular.element (document.getElementsByClassName(“ng-scope”).scope ();
同样,我们可以像这样通过HTML元素的名称来访问作用域: angular.element (document.getElementsByName (onboardingForm) [0]) .scope ()