ng-if连续执行方法

时间:2016-04-11 15:41:31

标签: javascript angularjs

我有以下代码:

data-ng-if="(fooCtrl.displayControl(1))

displayControl方法返回truefalse

我发现ngif即使在评估过一次之后也会不断地倾听。我是如何发现这一点的,是通过指出方法的断点。在几个F8(在调试器中)之后,它将继续正常。

为什么ngif正在连续执行该方法?

2 个答案:

答案 0 :(得分:4)

Angular在每个摘要周期运行每个观察器函数,因此多次检查函数是正常的。如果您不想要这种行为,可以考虑one-time binding(Angular 1.3.x)。

data-ng-if=":: fooCtrl.displayControl(1)"

答案 1 :(得分:2)

所有内置指令都会在每个$digest周期内触发,详情请参阅角度摘要周期herehere

所以要注意使用像ng-showng-if这样的指令,并且不要让它们监听一个执行大量处理或函数的函数,这些函数有一些循环和那种东西,保持他们听已经确定的布尔或简单的功能