使用Knockout.JS,我试图确定如何最好地在视图模型扩展对象时,他们将通过映射插件加载都和动态添加。 在这个例子中,我加入一个方法的addChild到Person对象。
映射在扩展:
var myPersonModel = function (data) {
ko.mapping.fromJS(data, {}, this);
this.addChild = function () {
this.children.push(new Child());
} .bind(this);
}
var mapping = {
'people': {
create: function (options) {
return new myPersonModel(options.data);
},
}
}
var viewModel = ko.mapping.fromJS(data, mapping);
动态创建期间扩展:
function Person(id, name, children) {
this.id = ko.observable(id);
this.name = ko.observable(name);
this.children = ko.observable(children);
this.addChild = function () {
this.Forms.push(new Child());
} .bind(this);
}
但在我看来,必须有这样做,这样我不需要重复自己,更简单的方法,都映射和新对象获得addChild
方法。