AngularJs 替代 ng-if 来保存摘要

AngularJs alternative to ng-if to save digest

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

有时在ng-if中有一个变量可能会改变,但通常在控制器启动时固定,然后永远不会改变。

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

例如

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

第一次评估时,userIsSuperior() 的 return 值永远不会改变(当然在本次会话期间),但我知道 AngularJs Digest 会在每个循环中评估它。 我怎样才能避免这种情况?还是我遗漏了什么?

我想你要找的是one-time binding

如果您使用:

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

那么 userIsSuperior() 的值将只计算一次,并保持该值。

demo

第一个答案解决方案需要 AngularJS > 2.

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

Here