2013-11-15 169 views

回答

5

角穿上你的ng-hide功能的手表让每一个消化周期也可以看到,如果结果改变了(因而,如果它需要从隐藏出示您的元素,反之亦然改变)。

当观看功能进行评估(在$digest)如有人已经从以前$digest改变,那么角知道这种改变会通过纹波等观看功能(可能是改变的变量在另一个观看功能使用)。所以每个手表都会重新评估(也称为脏处理),直到没有手表发生变化。因此,通常情况下,您会在每个摘要中看到2个受监视函数的调用,有时甚至更多(最多10个 - 在10个循环中,通过它放弃并报告错误,表明它无法稳定)。

这里有更多关于watchdigest

http://docs.angularjs.org/api/ng $ rootScope.Scope

http://www.benlesh.com/2013/08/angularjs-watch-digest-and-apply-oh-my.html

+0

谢谢,我不知道是否有办法减少时间,那是我能够只运行一次该功能吗? –

+0

不在'ng-hide'内。 Angular需要这种机制,因此无论何时您的条件更改的结果都可以更改元素的可见性。减少通话的动机是什么? – KayakDave

-1

ng-hide是使用$watch内部的指令之一。由于$watch使用摘要循环(至少运行2次以检查值是否已更改),因此您的函数isSpecificPage已运行两次。

有关在内部使用$watch的指令列表,请参阅此计算器的答案directives that add watch internally