Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 获取应用程序/模块中的绑定总数_Angularjs - Fatal编程技术网

Angularjs 获取应用程序/模块中的绑定总数

Angularjs 获取应用程序/模块中的绑定总数,angularjs,Angularjs,有没有办法获取模块在任何时间点使用的绑定(通过模板“{..}/ng xxx=“…”,$scope.$watch(…),等等)的总数?您应该能够使用document.getElementsByClassName(“ng binding”).length获得一个大致的概念。如前所述,此类应用于具有{{…}或ng bind绑定的元素,因此您可以使用绑定获取数量或元素。但是,它将错过任何没有以这种方式定义的内容 应该使用所有表达式绑定来解释表达式,因此如果您对临时度量感到满意,可以尝试在源代码中向该服务

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

您应该能够使用
document.getElementsByClassName(“ng binding”).length获得一个大致的概念。如前所述,此类应用于具有
{{…}
ng bind
绑定的元素,因此您可以使用绑定获取数量或元素。但是,它将错过任何没有以这种方式定义的内容

应该使用所有表达式绑定来解释表达式,因此如果您对临时度量感到满意,可以尝试在源代码中向该服务添加一些调试代码。应该很容易看到绑定是何时创建的,但更难看到绑定是何时销毁的

看看当前的主机,看起来,
$parse
将更改为1.2.0,这可能会使Chrome中的事情变得更简单。为此,您应该能够使用Chrome Developer工具拍摄堆快照(从“概要文件”选项卡),并使用
解析器
构造函数搜索所有对象

您还可以使用下面的内容查看应用程序中的观察者数量

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

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

下面是一篇关于如何随时使用浏览器控制台执行此操作的文章。本文还包含了一些代码,用于在您启动多个应用程序时获取绑定数量


这是一个非常棒的答案,可能是重复的。它帮助我一眼就发现了我的网页上一些我以前没有注意到的突出问题。我认为,我所接受的答案也是相关的
$rootScope.$countWatchers();