2013-11-15 96 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