gpt4 book ai didi

angularjs - 获取您的应用程序/模块中的绑定(bind)总数

转载 作者:行者123 更新时间:2023-12-04 11:07:39 28 4
gpt4 key购买 nike

有没有办法获取模块在任何时间点使用的绑定(bind)总数(通过模板的 {{ .. }}/ng-xxx="..."$scope.$watch(...) 等)?

最佳答案

使用 document.getElementsByClassName("ng-binding").length 应该可以大致了解一下。 .如解释 here ,此类适用于具有 {{ ... }} 的元素或 ng-bind绑定(bind),因此您可以使用绑定(bind)获取数字或元素。它会错过任何未以这种方式定义的内容。

所有表达式绑定(bind)都应该使用 $parse 解释表达式,如果您对临时措施感到满意,您可以尝试在 Angular 源代码中向该服务添加一些调试代码。当绑定(bind)创建时应该很容易看到,但在销毁时更难看到。

看现在的master,好像是$parse将针对 1.2.0 进行更改,这可能会使 Chrome 中的事情变得更容易。为此,您应该能够使用 Chrome 开发者工具获取堆快照(从“配置文件”选项卡),并使用 Parser 搜索所有对象。构造函数。

您还可以使用类似的方式查看您的应用程序中的观察者数量

var watchersPerScope = $('.ng-scope').map(function() {
var s = $(this).scope();
if(s.$$destroyed) return 0;
return (s.$$watchers || 0) && s.$$watchers.length;
}).get();
var totalWatchers = 0;
for(var i=0; i<watchersPerScope.length; i++)
totalWatchers += watchersPerScope[i];
console.log(totalWatchers);

我意识到这些都不是你所要求的很好的解决方案,但它们至少是一些东西。最后的建议是,如果您出于性能原因这样做, Batarang对于 Chrome 有一个非常好的性能部分。

在较新版本的 angular (1.3.2+) 中,您还可以使用
$rootScope.$countWatchers();

如果包含 ngMock页面中的模块。请参阅文档 here .

关于angularjs - 获取您的应用程序/模块中的绑定(bind)总数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19385744/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com