我正在尝试找出将元素添加到使用 ko.mapping 创建的模型中的列表的规范方法。我创建了一个 jsFiddle 来修补:
javascript 类似于以下内容:
var mapping, baseModel, view_model;
mapping = {
outer: [{
alpha: '',
beta: [
{
carotine: '',
blockers: ''}
]
}]
};
baseModel = { // add in functionality
append_outer: function() {
this.outer.push({});
},
append_beta: function(xyz) {
this.beta.push({});
}
};
view_model = ko.mapping.fromJS(mapping, {}, baseModel);
ko.applyBindings(view_model, $("#mapped")[0]);
相应的 HTML在 jsFiddle 上。
当我使用时,append_outer
我希望将一个新元素添加到 view_model 中,该元素与第一个元素基本相同,都带有 observables。当我使用时,append_beta
我希望 beta 有一个新元素[carotine: ko.observable(), blockers: ko.observable]
。我还没有看到一个明显的方法来做到这一点 - 但我希望它是一个非常常见的用例。
出于显而易见的原因,示例代码没有达到我想要的效果!当然,这正是我正在修补的东西,希望能找到一些明显的东西,例如ko.mappingCreate
或类似的东西。唉,没有这样的运气。
可能会提到数据模型是动态的——尽管列表中的项目总是具有与其对等节点相同的数据表示。有人可能会说,用于创建视图模型 ( mapping
) 的数据是一个原型。
我将不胜感激任何想法和方向。