knockoutjs在绑定后添加了observable

时间:2013-12-10 16:28:06

标签: knockout.js

我有一个嵌套对象,我用映射插件使它成为一个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未更新。

处理此类案件的常见方法是什么。我提供的示例已经简化。实际上,对象更复杂。我是否需要传递默认值,使其可观察,每当有新数据进入时,我会没事的?我认为这会起作用,但有另一种方式不需要这样的东西吗?一种使这些新属性动态绑定的方法

由于

0 个答案:

没有答案