0

かなりうまく機能している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);
4

1 に答える 1

1

プロパティが監視可能でない場合は、ko.utils.extend を使用できます。

var original = { id: 1, name: 'Hugo', age: 18 };
var modifications ={ id: 1, city: 'New York', country: 'US' };


var result2 =  ko.utils.extend(original,  modifications);

console.log(JSON.stringify(result2));

フィドルを見る

于 2013-07-11T14:47:50.863 に答える