我正在尝试使用Angular.js Batarang Chrome扩展程序对Angular.js应用程序进行性能调整。扩展程序的一个功能是它列出了Angular.js检查每个$ digest的所有“监视表达式”,并显示了它们需要多长时间进行评估。大多数表达式看起来像:
'comment.commenter_profile_url'
'comment.commenter_name'
...
然而,页面上最昂贵的手表表达显然是
"function (){f=i(c);var a,b;if(L(f))if(Xa(f))
{if(e!==h)e=h,x=e.length=0,g++;a=f.length;if(x!==a)g++,e.length=x=a;
for(b=0;b<a;b++)e[b]!==f[b]&&(g++,e[b]=f[b])}else{e!==n&&(e=n={},x=0,
g++);a=0;for(b in f)f.hasOwnProperty(b)&&(a++,e.hasOwnProperty(b)?
e[b]!==f[b]&&(g++,e[b]=f[b]):(x++,e[b]=f[b],g++));if(x>a)for(b in
g++,e)e.hasOwnProperty(b)&&!f.hasOwnProperty(b)&&(x--,delete e[b])}else
e!==f&&(e=f,g++);return g}"
(换行是我的)。这里发生了什么?我最好的猜测是,这是某种编译过滤的ng-repeat。 (如果我是正确的,我真的很感谢Angular.js做的事情的总结 - 如果有的话 - 使ng-repeat和过滤器有效。)