看一下knockout 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);
但是,如果我传递一个带有对象的数组,它就可以了 我看到当将对象传递给fromSS时,返回的对象没有subscribe方法 无论如何要解决这个问题吗?
由于
答案 0 :(得分:1)
假设您希望订阅者每次更新event
时都会触发,包括第一次设置。你可以试试这个;
function EventsKoModel(data){
var self = this;
self.event = ko.observable();
self.event.subscribe(function(){
console.log("something changed");
});
ko.mapping.fromJS(data, {}, self);
}
答案 1 :(得分:0)
我前段时间有相同的要求并为此编写了Knockout Reactor。它在订阅分层模型方面做得很好,并提供了您可能需要的大部分功能,以便您立即开始使用。
以下是指向它的链接: