javascript - KnockoutJS 订阅多个具有相同回调操作的 observables

标签 javascript knockout.js

我在 KnockoutJS 中有一个模型类,它有多个我想订阅的值。每个订阅都将执行相同的任务,如下所示:

function CaseAssignmentZipCode(zipCode, userId, isNew) {
  var self = this;
  self.zipCode = ko.observable(zipCode);
  self.userId = ko.observable(userId);
  self.isNew = isNew;
  self.isUpdated = false;

  self.zipCode.subscribe(function () { self.isUpdated = true; });
  self.userId.subscribe(function () { self.isUpdated = true; });
}

有没有办法将这两个调用结合起来进行订阅,以便我可以使用一个订阅来“观看”两个值?

最佳答案

为此,您可以使用计算的 observable。你只需要确保你访问了 read 函数中每个 observable 的值。会是这样的:

ko.computed(function() {
   self.zipCode();
   self.userId();
   self.isUpdated = true;
});

因此,您获得了对两个可观察对象的依赖关系并设置了您的标志。

此外,如果您正在寻找类似“脏”标志的东西,那么您可能会考虑类似:http://www.knockmeout.net/2011/05/creating-smart-dirty-flag-in-knockoutjs.html .这个想法是你使用一个计算的 observable,它在一个对象上调用 ko.toJS() 来解开它的所有 observables。

关于javascript - KnockoutJS 订阅多个具有相同回调操作的 observables,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9278497/

相关文章:

javascript - 如何在 Knockout JS 中的 BindingHandler 中获取绑定(bind)表达式

knockout.js - Durandal:制作自定义 Knockout 绑定(bind)模块

javascript - 如何将数据放入嵌套数组并将其绑定(bind)到 HTML Knockout.js

javascript - JQuery 时间选择器进入 knockout 名单

javascript - 如果绑定(bind)在 KnockoutJS 中不起作用,则为无容器

javascript - d3.js 图表内的缩放问题

javascript - json 加载后切换 li 不起作用?

javascript - 如何正确处理双嵌套数组(ReactJS + Redux)中的状态?

javascript - 根据屏幕分辨率自动调整网页大小

javascript - jquery 显示/隐藏 div 下拉菜单不起作用