如何从chrome控制台访问角度的$ scope变量

zot*_*guy 43 google-chrome-devtools angularjs

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

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}
    ];
Run Code Online (Sandbox Code Playgroud)

$scope.widgets简单的东西在控制台中不起作用!

Wil*_*ill 31

范围绑定到DOM,因此您需要获取元素并使用一些角度代码来获取范围.

最好的办法是获取Controller绑定的元素,并查看其范围.

下面是答案 如何使用AngularJS在浏览器控制台中访问$ scope变量?

  • 确保调用`angular.element('[ng-controller = MyCntrl]').scope().$ apply();`如果你以这种方式修改控制台中的任何范围变量.否则你将看不到变化. (8认同)
  • 感谢angular.element('[ng-controller = MyCntrl]').scope()完成了这个伎俩 (7认同)

Bra*_*ath 27

这是一种在没有batarang的情况下进入范围的方法.假设您在页面上引用了jquery和angular,您可以:

var scope = angular.element($('#selectorId')).scope();
Run Code Online (Sandbox Code Playgroud)

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

var scope = angular.element($('[ng-controller=myController]')).scope();
Run Code Online (Sandbox Code Playgroud)

在对模型进行更改后,您需要通过调用将更改应用于DOM

scope.$apply();
Run Code Online (Sandbox Code Playgroud)

  • 如果使用神奇的内置元素选择器,此功能将变得更加强大。在dom树中选择元素,然后在控制台中评估angular.element($ 0).scope() (2认同)

odi*_*seo 17

您可以按照Will的asnwer或安装Angular Batarang Chrome扩展程序.这不仅允许您查看和操作"$ scope"对象,比如说您的JavaScript控制台,而且它是开发复杂的AngularJS应用程序时的基本工具.