AngularJs替代ng-if以保存摘要

时间:2016-06-01 04:30:17

标签: angularjs performance digest

我最近开始研究AngulaJs中的摘要和性能改进,并在我的网站上发现我使用了大量的ng-if

有时在ng-if中有一个变量可能会发生变化,但通常会在控制器启动时修复,然后永远不会更改。

我应该怎样做以提高性能,避免使用摘要来评估那些不可更改的ng-if循环?我应该改变指令吗?用什么?

E.g

在我的标题模板中,我有一个只能由特定类型的用户看到的div。它只是一个div,所以我不想调用一些不同的模板。 我把<div ng-if="userIsSuperior()"> ... </div>

首次评估时,userIsSuperior()的返回值永远不会改变(当然在此会话期间),但我知道AngularJs Digest会在每个循环中对其进行评估。 我怎么能避免这个?或者我错过了什么?

2 个答案:

答案 0 :(得分:2)

我认为你要找的是one-time binding

如果您使用:

<div ng-if="::userIsSuperior()"> ... </div>

然后userIsSuperior()的值只计算一次,并且会坚持该值。

请参阅demo

答案 1 :(得分:1)

第一个答案解决方案需要AngularJS&gt; 2。

我找到了一个有效的解决方案,使用OnceJS,库进行一次性绑定。

Here