2014-01-06 74 views
4

我有一個模型:如何觀看AngularDart集合的元素?

class WordList { 
    List<Word> words = []; 
} 

它是通過依賴注入創建成我的意見之一。

@NgController(
    selector: '[list-ctrl]', 
    publishAs: 'ctrl' 
) 
class ListCtrl { 
    WordList wordList; 
    Scope scope; 

    ListCtrl(this.router, this.wordList, this.scope) { 
    scope.$watchCollection("", onChange); 
    } 

我想運行一些邏輯,每當一個項目從該列表中修改。我該如何做到這一點?

我相信關鍵是在$ watchCollection中,但我無法弄清楚作爲監視表達式要傳遞什麼。 「ctrl.wordList.words」會告訴我何時添加/刪除項目,但沒有更改。

回答

6

$watchCollection正如您所指出的,只能在List的變化中觀察更改,而不是針對列表項目中的更改。其原因是,觀看每個對象將具有爆炸性的屬性。

scope.$watch(() => wordList, onChange); 

你可以在某種程度上實現onChange方法,它會在每個新項目,以及註銷的項目去除形成收集手錶創建進一步手錶。

+2

我有類似的問題,但這個答案似乎不是最新的。 '$ watch'現在只是'watch'。此外,'()=> wordList'不再是一個有效的表達式。你能否更新這個答案以反映角飛鏢的最新變化?我需要深入觀察地圖,我希望這會有所幫助。謝謝。 –