我从一个运行良好的 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);