簡體   English   中英

Knockout.JS可觀察數組對單個可觀察項目的更改

[英]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 ,則您有兩個訂閱ab加一個c

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM