2012-08-24 22 views
2

我一直在使用Knockout.js,但有一種模式我使用了很多,我想了解它是如何工作的。Knockout如何更新通過其他函數過濾的ObservableArrays上的綁定?

通常我會有一些視圖模型的ObservableArray,比如productModule.products()。然後,我將擁有各種過濾器函數,例如使用數組過濾器的productModule.getAvailableProducts()(我當前使用Underscore.js)來返回子集,並且該函數是綁定到UI的。我不太明白的是,如果這些函數返回一個標準數組而不是ObservableArray,那麼當我更改基礎ObservableArray時,Knockout的綁定仍會更新。下面是一個例子小提琴:

http://jsfiddle.net/4RHks/19/

確實淘汰賽確定即使通過其他功能結合的時間是否是特定的綁定解析爲ObservableArray?如果是這樣,鏈中可以有任意數量的這種功能嗎?

任何幫助理解這一點非常感謝。

回答

0

綁定實際上是在用於跟蹤依賴關係的計算的observable內執行的。因此,如果你調用一個訪問observable的函數,那麼它們將對該元素綁定的依賴做出貢獻。當依賴性發生變化時,綁定將再次運行。

這個職位進入多一點點的細節:http://www.knockmeout.net/2012/06/knockoutjs-performance-gotcha-3-all-bindings.html

+0

這是一個非常有用的帖子,以及有關與獨立計算的觀測叉每一個綁定的一點是有趣的。我的應用程序變得越來越複雜,我需要開始真正密切關注它正在進行的Knockout工作。非常感謝。 –

相關問題