关于angularjs:如何从chrome控制台以角度访问$ scope变量

How to access $scope variable in angular from chrome console

如何从chrome控制台访问范围变量小部件

1
2
3
4
5
6
7
function MyCntrl($scope) {
    $scope.widgets = [
        {text:'Widget #1', datarow:1, datacol:1, datasizex:3, datasizey:3},
        {text:'Widget #2', datarow:2, datacol:1, datasizex:3, datasizey:3},
        {text:'Widget #3', datarow:1, datacol:2, datasizex:3, datasizey:3},
        {text:'Widget #4', datarow:2, datacol:2, datasizex:3, datasizey:3}
    ];

像EDOCX1[0]这样的东西在控制台中根本不起作用!


作用域绑定到DOM,因此需要获取一个元素并使用一些角度代码来获取作用域。

最好的办法是得到一个控制器绑定到的元素,并查看其作用域。

这是答案如何使用angularjs访问浏览器控制台中的$scope变量?


这是一种不使用巴达朗的方法。假设您在页面上引用了jquery和angular,那么可以执行以下操作:

1
var scope = angular.element($('#selectorId')).scope();

或者,如果要按控制器名称查找作用域,请执行以下操作:

1
var scope = angular.element($('[ng-controller=myController]')).scope();

对模型进行更改后,需要通过调用

1
scope.$apply();


你可以遵循意志的力量或安装角巴塔朗铬延长。这不仅允许您从中查看和操作"$scope"对象,比如说您的javascript控制台,而且在开发复杂的AngularJS应用程序时,它是一个基本工具。


下面是一个例子:我的Angular单页应用程序中有以下DOM:

1
    Roles

这个DIV在控制器名usersappcontroller中作为UAC存在上面我有控制器作为语法

还要注意,我在应用程序中使用的是jquery:

$($0).controller()方法将直接访问$scope对象上的UAC对象。

$($0.scope()将为我选择的元素提供原型链,如果我遵循该链,将在该元素上找到我的作用域对象。