Knockoutjs观察嵌套对象并订阅更改
Knockoutjs observe nested object and subscribe for changes
了解敲除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时,返回的对象没有subscribe方法有办法解决这个问题吗?
感谢
假设您希望订阅服务器在每次更新event
(包括第一次设置)时激发。你可以试试这个;
function EventsKoModel(data){
var self = this;
self.event = ko.observable();
self.event.subscribe(function(){
console.log("something changed");
});
ko.mapping.fromJS(data, {}, self);
}
我不久前也有同样的要求,并为此编写了Knockout Reactor。它在订阅分层模型方面做得很好,并提供了您可能需要的大部分功能,以便立即启动。
这是它的链接:
https://github.com/ZiadJ/knockoutjs-reactor
相关文章:
- 用嵌套函数和默认函数定义函数
- 如何在ReactJS JSX中执行嵌套的if-else语句
- 可以简化嵌套的延迟Q Promises解析吗
- 用于搜索的聚合物嵌套绑定
- 如何使用javascript获取嵌套对象中所有子对象的单个属性
- d3中堆栈函数和嵌套函数之间的差异
- 如何打印嵌套对象的所有值
- JavaScript 中的嵌套函数和 “this” 关键字
- 设置嵌套对象属性的更好方法
- querySelector/getElementByClassName嵌套项的顺序
- 将js对象更改为使用嵌套的可观察数组敲除js视图模型
- Knockoutjs观察嵌套对象并订阅更改
- 剑道模板使用嵌套/多维可观察
- 嵌套在 KnockoutJS 中可观察
- 挖空嵌套模型可观察数组未定义
- 是否有可能在运算符内部返回新的可观察项,嵌套可观察项
- Angular 2 rxjs的嵌套观察对象
- 扁平化嵌套的可观察对象
- 如何在Angular 2中平面化嵌套的可观察对象
- 余烬观察嵌套模型属性