【问题标题】:Knockout universal subscribe淘汰赛通用订阅
【发布时间】:2012-09-20 03:40:19
【问题描述】:

如果网页上的 10 个可观察值中的任何一个发生更改,我希望得到通知。我可以通过单独订阅每个(编写相同的代码 10 次)来做到这一点。有没有办法用更少的代码通用地做到这一点?

pom

【问题讨论】:

  • 这也可能对您有所帮助:knockmeout.net/2011/05/…。它描述了如何使用ko.toJS / ko.toJSON 来获取某个根对象下所有可观察对象的依赖关系

标签: knockout.js


【解决方案1】:

这里是使用计算值的解决方案:

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());

【讨论】:

  • 完美。谢谢!虽然我需要在应用程序启动时添加一个内部计数器来限制,因为它会在用户进行更改之前触发几次。
  • 也许this 可以提供帮助。
猜你喜欢
  • 1970-01-01
  • 2016-02-29
  • 2015-01-04
  • 2012-10-09
  • 2015-03-27
  • 1970-01-01
  • 1970-01-01
  • 2012-05-26
  • 2016-06-09
相关资源
最近更新 更多