我从Ajax源创建了一个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);
答案 0 :(得分: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));