2013-03-26 22 views
8

我知道AngularJS在ng-repeat上設置了一些手錶。此時設置了什麼類型的手錶?

另外,有人可以解釋在每個這些情況下會發生什麼嗎?我想知道,如果我有很多項目,所以用戶不會被本來可以被消除的手錶陷入困境。

一個

<div ng-repeat="item in items"> 
    <div>{{item.property}}</div> 
</div> 

兩個

<div ng-repeat="item in items"> 
    <div>{{item.property | myFormatter}}</div> 
</div> 

<div ng-repeat="item in items"> 
    <div>{{format(item.property)}}</div> 
</div> 

<div ng-repeat="item in items"> 
    <div>{{item.something()}}</div> 
</div> 

回答

7

每個ng-repeat將在items上設置$ watch。 (如果你看看ng-repeat source code,其中大部分是$ watch方法的watchExpression函數)。每次運行角度爲digest cycle時,此手錶功能都將檢查items中的每個item。 (請注意,在摘要循環中,可以多次調用此手錶功能)。

每個{{}}設置一個$ watch。如果像item.property這樣的內容位於{{}}中,則每個摘要循環至少檢查一次髒。

如果函數在{{}} s內,那麼每個摘要循環至少調用一次該函數。

我不確定x | filter,但this fiddle似乎表明,即使x沒有更改,每個消化週期至少會調用一次該過濾器。

+5

這對'x | filter'。我不明白這是爲什麼。也許他們認爲過濾器不會是一個純粹的功能? – Bradford 2013-03-26 20:31:51

+2

我也很驚訝。 – 2013-03-26 20:34:41

相關問題