查看敲除JS和映射插件。我注意到,如果我通过对象,我将无法订阅它进行更改。基本上,如果对象的任何成员更改,我想通知我。我真的不在乎取回更改的属性(但如果有可能,我想知道如何)

function EventsKoModel(data){
    var self = this;
    self.event = ko.mapping.fromJS(data);
   //the below throws Error 
    //TypeError: self.event.subscribe is not a function
    self.event.subscribe(function(){
       console.log("something changed");
     });
}

var data = {
    'id': 14124124124124,
    'name': 'Some Event',
    'events': [{
       'id': 1
     },{
        'id': 2
      }]
}
var d = new EventsKoModel(data);
ko.applyBindings(d);

但是,如果我通过一个带有对象的数组,我看到的是,当将对象传递给fromjs时,返回的对象没有订阅方法可以解决这个问题吗?

谢谢

有帮助吗?

解决方案

假设您希望订户每次发射 event 已更新,包括第一次设置。您可以尝试一下;

function EventsKoModel(data){
    var self = this;
    self.event = ko.observable();
    self.event.subscribe(function(){
        console.log("something changed");
    });
    ko.mapping.fromJS(data, {}, self);
}

其他提示

不久前,我有相同的要求,并为此编写了基因击反应堆。它在订阅层次模型方面做得很好,并提供了您可能需要立即前进的大多数功能。

这是指的链接:

https://github.com/ziadj/knockoutjs-reactor

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top