加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-17 08:46:32 所属栏目:安全 来源:网络整理
导读:有没有办法获得总的#绑定(通过模板'{{}}} / ng-xxx =“…”,$scope.$watch(…)等等.模块在任何时间点使用? 您应该能够使用document.getElementsByClassName(“ng-binding”).length来获得一个粗略的想法.如 here所述,此类适用于具有{{…}}或ng-bind绑定的元
有没有办法获得总的#绑定(通过模板'{{}}} / ng-xxx =“…”,$scope.$watch(…)等等.模块在任何时间点使用?
您应该能够使用document.getElementsByClassName(“ng-binding”).length来获得一个粗略的想法.如 here所述,此类适用于具有{{…}}或ng-bind绑定的元素,因此您可以使用绑定来获取数字或元素.它将会遗漏任何未定义的方式.

所有表达式绑定都应该使用$parse来解释表达式,这样如果您对临时度量感到满意,可以尝试在角度源代码中为此服务添加一些调试代码.创建绑定时应该很容易看到,但是当它被销毁时更难以看到.

看看当前的主人,看起来$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 for Chrome有一个非常好的性能部分.

在较新版本的angular(1.3.2)中,您也可以使用

$rootScope.$countWatchers();

如果您在页面中包含ngMock模块.参见文档here.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读