javascript - 在控制台中列出正在运行的 Controller 实例及其 this 变量?

标签 javascript angularjs

我的 Angular 应用程序中某处存在内存泄漏,我正在尝试找到它。

是否可以在控制台中列出所有正在运行的 Controller 实例及其 this 变量?

我知道我可以输入 console.log(window) 来打印所有变量,但我不知道如何从那里导航到 Controller 实例。

最佳答案

那么,您可以很好地访问所有 Controller 的范围,如下所示:

var ngControllers = document.querySelectorAll('[ng-controller]');

angular.forEach(ngControllers, function(controllerElement) {
    var scope = angular.element(controllerElement).scope();
    console.log(scope);
});

而且,如果您想访问所有嵌套作用域,而不管 ng-controller 是什么,那么您也可以这样做:

var $rootScope = angular.element(document.querySelector('[ng-app]')).scope();

var q = [$rootScope];

while (q.length > 0) {
    var scope = q.pop();
    console.log(scope);
    if (scope.$$childHead) {
        q.push(scope.$$childHead);
    }
    if (scope.$$nextSibling) {
        q.push(scope.$$nextSibling);
    }
}

关于javascript - 在控制台中列出正在运行的 Controller 实例及其 this 变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35845787/

相关文章:

javascript - Chrome/Firefox 中表格的鼠标悬停显示

javascript - 是否可以为 AngularJS 中的 ng-repeat 的每个元素触发一个函数?

javascript - [A-Z]{2,4} 不限于 2 到 4 个字符

javascript - 将一个变量的值设置为相同键的另一个变量

javascript - 将 Angular 应用程序包装在 jQuery 函数中

javascript - React - 发布错误响应后不刷新页面

AngularJS:如果元素具有ngModel和具有本地范围的指令,则两种方式数据绑定(bind)失败

javascript - 无限石工卷轴不起作用

javascript - 我应该如何考虑对象文字中的属性定义?

javascript - 为什么我的解决方案这么慢,如何提高查询性能?