什么会阻止从浏览器控制台访问AngularJS $范围?

时间:2015-11-17 02:16:30

标签: javascript angularjs console angularjs-scope

我过去做了几个使用AngularJS的项目。在开发过程中,我始终能够在浏览器控制台中调用$ scope,从而调用其所有变量。例如,$scope.myArray会返回[][object1, object2]等内容。

但是,现在当我输入$scope时,我得到:

  

未捕获的ReferenceError:未定义$ scope

我还查看了其他帖子,例如How to access the $scope variable in browser's console using AngularJS?,建议使用angular.element($0).scope(),但是当我在控制台中输入时,我得到:

  

未定义

我无法访问myArray之类的对象,即使我知道它正在被创建。有谁知道改变了什么?

编辑:当我尝试以前能够访问$ scope的项目中的代码时,我也遇到了这个问题,所以这让我觉得这不是一个简单的实现错误。

2 个答案:

答案 0 :(得分:0)

$ 0是对元素选项卡中所选DOM节点的引用,因此通过这样做可以在控制台中打印出选定的DOM节点范围。

您必须先获得该元素。 或者您可以获得指定的范围。 例如:

angular.element('‪#‎element‬').scope();

angular.element(document.getElementsByTagName("button")[0]).scope()

https://jsfiddle.net/fatb8g3z/

答案 1 :(得分:0)

在控制器的定义中放置window.myScope = $scope。然后在控制台中,您可以致电myScope.myArray将某些内容返回给您。

例如:

var app = angular.module('myApp', [])

app.controller('myCtrl', function($scope) {
window.myScope = $scope; //this allows console access

$scope.myArray = [];
//more code here
});