AngularJs替代ng保存摘要
我最近开始研究AngulaJs的摘要和性能改进,在我的网站上发现我正在使用大量的AngularJs替代ng保存摘要,angularjs,performance,digest,Angularjs,Performance,Digest,我最近开始研究AngulaJs的摘要和性能改进,在我的网站上发现我正在使用大量的ng if 有时在ng if中,有一个变量可能会改变,但通常在控制器启动时固定不变,然后再也不会改变 为了提高性能,我应该做些什么来避免对每个循环进行评估,这些循环是不可更改的ng if?我应该改变指令吗?用什么 例如 在我的头模板中,我有一个div,只有特定类型的用户才能看到它。它只是一个div,所以我不想调用其他模板。 我把 当第一次求值时,userIsSuperior()的返回值永远不会改变(当然在这个会话期间
ng if
有时在ng if
中,有一个变量可能会改变,但通常在控制器启动时固定不变,然后再也不会改变
为了提高性能,我应该做些什么来避免对每个循环进行评估,这些循环是不可更改的ng if
?我应该改变指令吗?用什么
例如
在我的头模板中,我有一个div,只有特定类型的用户才能看到它。它只是一个div,所以我不想调用其他模板。
我把代码>
当第一次求值时,userIsSuperior()
的返回值永远不会改变(当然在这个会话期间),但我知道AngularJs Digest会在每个循环中求值。
我怎样才能避免这种情况?还是我遗漏了什么?我想你要找的是
如果您使用:
<div ng-if="::userIsSuperior()"> ... </div>
。。。
然后,userIsSuperior()
的值将只计算一次,并将保持该值不变
请参阅。第一答案解决方案需要AngularJS>2
在使用OnceJS库进行一次性绑定时,我找到了一个有效的解决方案
如果没有具体的例子,很难回答。我得到了很多,大多数控制器中的函数根据一些计算返回true或false(如果网站提高,可能会变得非常昂贵),还有一些仅使用一个变量。有一点是,设置范围模型属性总是比在视图中使用函数(如userIsSuperior()
)更好。在Digest期间节省了大量不必要的函数调用。我会说您需要更关注的区域在ng repeat
中。在循环中有大量的ng if
,比担心单个独立元素会堆积更多的观察者