我有一个嵌套对象,我用映射插件使它成为一个observable。但是,当我更新对象并且它包含新属性时,这些不会反映在UI
中function Model(data){
var self = this;
ko.mapping.fromJS(data, {}, self);
self.printName = ko.computed(function(){
return self.changes.name;
})
self.printAge = ko.computed(function(){
if(self.changes.age)
return self.changes.age;
})
self.refresh = function(data){
ko.mapping.fromJS(data, self);
}
}
$(function(){
var data = {
changes:{
name: "User"
}
}
model = new Model(data);
ko.applyBindings(model)
})
<div data-bind="text: printName()"></div>
<div data-bind="text: printAge()"></div>
以上,渲染时会打印出名称。我知道年龄并没有成为一个可观察的年龄,因为它没有包含在初始数据中。
在某些时候,我从服务器收到一个新对象,该对象现在具有age属性,我用
刷新模型model.refresh(data)
但当然UI未更新。
处理此类案件的常见方法是什么。我提供的示例已经简化。实际上,对象更复杂。我是否需要传递默认值,使其可观察,每当有新数据进入时,我会没事的?我认为这会起作用,但有另一种方式不需要这样的东西吗?一种使这些新属性动态绑定的方法
由于