【发布时间】:2012-11-01 03:54:47
【问题描述】:
angularjs应用在浏览器中加载时有没有办法调试它?
即。我希望得到我当前应用程序的$rootScope。我该怎么做?
【问题讨论】:
标签: javascript angularjs
angularjs应用在浏览器中加载时有没有办法调试它?
即。我希望得到我当前应用程序的$rootScope。我该怎么做?
【问题讨论】:
标签: javascript angularjs
为巴塔朗+1
此外,您可以通过从控制台执行以下命令从 DOM 中的任何元素获取范围
angular.element(DOMNODE).scope()
其中 DOMNODE 当然是对 DOM 节点的引用。
例如,在 Chrome 中的 elements 选项卡中,您可以选择 ng-app 指令所在的节点,并获取根范围
angular.element($0).scope()
【讨论】:
ng-app 元素,然后执行var $rootScope = angular.element($0).injector().get('$rootScope') 并使用它。
angular.element('body').scope();,如果您的应用是<body data-ng-app="SomeApp">
debugInfoEnabled 毫无价值。
在开发者控制台中试试这个
$rootScope = angular.element(document).scope()
【讨论】:
Batarang -- AngularJS 的谷歌浏览器插件
安装后就可以了
console.log($rootScope);
并在您的 chrome 控制台中检查范围对象。
顺便说一句,如果你想获得 $rootScope,你需要注入到你的控制器中
喜欢
app.controller('MainCtrl', function($scope, $rootScope) {
}
【讨论】:
对于那些使用 $compileProvider.debugInfoEnabled(false); 和 ng-strict-di 的用户,只需将其粘贴到控制台中,$rootScope 将被记录并添加到 window:
function getRootScope($rootScope){ console.log(window.$rootScope = $rootScope); }
getRootScope.$inject = ["$rootScope"];
angular.element(document.querySelector('[data-ng-app],[ng-app]')).injector().invoke(getRootScope);
【讨论】:
delete window.angular,希望它不会破坏任何东西。
你可以在你的源代码开发者工具->源代码中看到 $rootScope
【讨论】:
在开发者控制台输入angular.element('body').scope();,如果你的应用是<body data-ng-app="SomeApp">
【讨论】:
只是想补充一下,有一个名为“Angular Scope Inspector”(current store url)的免费 Chrome 扩展程序会自动检查开发人员工具元素选项卡中选定元素的范围
我今天才发现它,它非常有用,IMO
【讨论】: