[英]Knockout.JS Observable Array Changes to Individual Observable Items
我有一個帶有observableArray
(名為'all')對象的視圖模型。 該對象的一個屬性是選擇了一個observable
名稱。 我想要一些代碼在數組中子對象的selected屬性發生變化時執行。 我嘗試通過all.subscribe()
手動訂閱all
,但該代碼僅在添加或刪除項目時觸發。 我更新了代碼,就像這樣:
all.subscribe(function () {
ko.utils.arrayForEach(all(), function (item) {
item.selected.subscribe(function () {
//code to fire when selected changes
});
});
});
這是正確的方法嗎?還是有更好的方法?
這接近正確。 可觀察數組訂閱僅適用於添加或刪除項目而不進行修改的情況。 因此,如果您想訂閱一個項目本身,您需要訂閱該項目本身:
關鍵點:observableArray跟蹤數組中的對象,而不是這些對象的狀態
簡單地將對象放入observableArray並不會使該對象的所有屬性本身都可觀察到。 當然,如果您願意,您可以觀察這些屬性,但這是一個獨立的選擇。 observableArray只跟蹤它所擁有的對象,並在添加或刪除對象時通知偵聽器。
( 來自Knockout文檔 )
我說“接近正確”因為您要刪除所有舊訂閱。 目前,如果可觀察數組以[a, b]
開頭,則您正在訂閱[a, b]
,但如果添加了c
,則您有兩個訂閱a
和b
加一個c
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.