2013-07-11 21 views
0

我從Ajax源創建一個observableArray,它工作得很好。現在我想用來自第二個源的數據擴展一些數組項。用來自第二個源的數據擴展observableArray

例如:

{ 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插件?我已經做了一些測試,結果是數組中項目的映射屬性已被第二個來源的屬性取代。


解決方案

嗯,這是實際上是非常容易解決。當使用地圖插件添加新數據時,我只需要檢查key。現有數據僅通過附加數據進行擴展。

ko.mapping.fromJS(modifications, { 
    key: function(data) { 
     return ko.unwrap(data.id); 
    } 
}, originalData); 

回答

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)); 

See fiddle

+0

但「LL上observableArray這項工作? –

相關問題