在控制台中列出正在运行的控制器实例及其 this 变量

List running controllers instances and their this variable in console?

本文关键字:实例 变量 this 控制器 运行 控制台      更新时间:2023-09-26

我的 Angular 应用程序中的某个地方有一个内存泄漏,正在尝试找到它。

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

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

好吧,您可以很好地访问所有控制器的scope,如下所示:

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);
    }
}