2012-09-28 53 views
0

如果10個可觀察對象中的任何一個在網頁上發生變化,我希望得到通知。我可以通過單獨訂閱每個(編寫相同的代碼10次)來完成此操作。有沒有辦法做到這一點普遍,少代碼?Knockout通用訂閱

POM

+0

這可以幫助你太:http://www.knockmeout.net/2011/05/creating-smart-dirty-flag -in-knockoutjs.html。它描述瞭如何使用'ko.toJS' /'ko.toJSON'獲取某個根對象 –

回答

0

這裏使用一個計算值的解決方案:

var Model = function() { 
    var self = this; 
    self.a1 = ko.observable(1); 
    self.a2 = ko.observable(1); 
    self.a3 = ko.observable(1); 
    self.all = ko.computed(function() { 
     self.a1();self.a2();self.a3(); 
    }, this); 
    self.all.subscribe(function() { 
     console.log("something changed"); 
    }); 
}; 
ko.applyBindings(new Model()); 
+0

下所有可觀察對象的依賴關係。謝謝!儘管我需要在那裏添加一個內部計數器來限制應用程序啓動,因爲在用戶進行更改之前它會觸發幾次。 – Pompair

+0

也許[this](http://knockoutjs.com/documentation/throttle-extender.html)可以提供幫助。 – gbs