使用ko valueHasMutated将值传递给订阅者

时间:2013-11-01 17:35:12

标签: javascript knockout.js

我有一个外部对象在我的视图模型之外进行了大量处理。我希望能够使用触发器从此对象发送数据。

是否可以使用valueHasMutated从普通对象向订阅者传递数据?

function obj(trigger) { 
  var self = this;
  self.notify = function (value) { 
     trigger.call(undefined,value);
  };
}

function vm() { 
  var self = this;
  self.flag = ko.observable();
  self.myobj = new obj(self.flag.valueHasMutated);
  self.flag.subscribe(function(value) { 
      console.debug("Caught trigger with value " + value);
  });
}

ko.applyBindings(new vm());

// trigger
ko.dataFor(document.body).myobj.notify("Working");

触发器正在弹出,但我得到的值是undefined

我在JSBIN here

上设置了一个示例

感谢您的任何帮助。

修改the source我可以看到valueHasMutated获得了“新价值”,但仍然无法使其发挥作用。

1 个答案:

答案 0 :(得分:0)

好的,发帖回答,直接更改旗帜的价值:self.myobj = new obj(self.flag)