2012-09-28 50 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