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に追加された新しい要素が最初の要素と本質的に同一であり、すべてがオブザーバブルであると期待します。私が使用するときappend_beta
、ベータ版には。を含む新しい要素があると思います[carotine: ko.observable(), blockers: ko.observable]
。これを行うための明白な方法は見たことがありませんが、非常に一般的なユースケースになると思います。
明らかな理由で、サンプルコードは私が望むことをしていません!もちろん、それは私が何か明白なもの、例えばko.mappingCreate
、またはそのようなものを見つけることを期待していじくり回していたものです。残念ながら、そのような運はありません。
データモデルが動的であることに言及している可能性がありますが、リストには常に、ピアのデータ表現と同じデータ表現を持つアイテムが含まれます。ビューモデル(mapping
)の作成に使用されたデータはプロトタイプであると言えます。
どんな考えや方向性もありがたいです。