您的位置:首页 > 运维架构

Ember copy array

2015-09-15 20:08 281 查看

Ember 不支持深度Copy

var dpItemDataCopy = Ember.makeArray(dpItemData);

console.log(dpItemData[0].links);
console.log(dpItemDataCopy[0].links);

delete dpItemDataCopy[0].links;

console.log(dpItemData[0].links);
console.log(dpItemDataCopy[0].links);


console的结果简略给出

Object
Object
undefined
undefined


我只删除Copy后数组第一个Object的links,但原始数组的第一个Object的links也被删除掉;

var dpItemDataCopy = Ember.makeArray(dpItemData);

console.log(dpItemData[0].links);
console.log(dpItemDataCopy[0].links);

delete dpItemDataCopy[0].links;

console.log(dpItemData[0].links);
console.log(dpItemDataCopy[0].links);


既然copy不管用,换makeArray试试,但是结果还是一样的;

网上讲这是Ember的一个bug

最后解决办法

var dpItemDataCopy = dpItemData.map(function(item) {
return Ember.copy(item, true)
});

console.log(dpItemData[0].links);
console.log(dpItemDataCopy[0].links);

delete dpItemDataCopy[0].links;

console.log(dpItemData[0].links);
console.log(dpItemDataCopy[0].links);


console结果

Object
Object
Object
undefined


结论

Ember copy和makeArray不支持deep复制数组

若想要真正copy一个数组,可以采用上面的方式,Ember后续应该会给出新的api

参考

http://stackoverflow.com/questions/9693154/native-array-in-emberjs-does-not-support-deep-copy
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: