かなりうまく機能しているAjaxソースからobservableArrayを作成します。ここで、配列項目の一部を 2 番目のソースからのデータで拡張したいと考えています。
例えば:
{ id: 1, name: 'Hugo', age: 18 }
...後で追加したい:
{ id: 1, city: 'New York', country: 'US' }
...結果は次のようになります。
{ id: 1, name: 'Hugo', age: 18, city: 'New York', country: 'US' }
これは ko.mapping プラグインで可能ですか? 配列内のアイテムのマップされたプロパティが 2 番目のソースのプロパティに置き換えられたという結果で、既にいくつかのテストを行いました。
解決
まあ、それは実際に解決するのはかなり簡単でした。マッピング プラグインを使用して新しいデータを追加するときは、key
. 既存のデータは、追加データで拡張されるだけです。
ko.mapping.fromJS(modifications, {
key: function(data) {
return ko.unwrap(data.id);
}
}, originalData);