【发布时间】:2012-06-26 23:19:48
【问题描述】:
我正在尝试找出将元素添加到使用 ko.mapping 创建的模型中的列表的规范方法。我created a jsFiddle to tinker:
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是on the jsFiddle。
当我使用append_outer 时,我希望将一个新元素添加到 view_model 中,该元素与第一个元素基本相同,都带有 observables。当我使用append_beta 时,我希望beta 有一个带有[carotine: ko.observable(), blockers: ko.observable] 的新元素。我还没有看到明显的方法来做到这一点 - 但我希望它是一个非常常见的用例。
由于显而易见的原因,示例代码没有达到我想要的效果!当然,这正是我正在修补的东西,希望能找到一些明显的东西,例如ko.mappingCreate 或类似的。唉,没有这样的运气。
也许提到数据模型是动态的 - 尽管列表中的项目总是具有与其对等项相同的数据表示形式。有人可能会说,用于创建视图模型 (mapping) 的数据是一个原型。
如果有任何想法和方向,我将不胜感激。
【问题讨论】:
标签: knockout.js knockout-mapping-plugin