深度复制可观察数组
Deepcopying observable array knockout
我有一个绑定到UI的可观察对象,点击按钮,我从可观察数组中创建一个新数组,并对新数组进行操作,但不幸的是,新数组的任何更改也会影响旧数组。
我使用下面的代码进行深度复制。
var clonedArr = $.extend(true, [], masterArray());
我错过了什么吗?您可以在这里找到jsfiddle (https://jsfiddle.net/t5a1xfud/)了解更多详细信息
您需要合并空数组和您的原始数组的方式$。扩展不会修改您的原始文件。
例子: https://jsfiddle.net/kyr6w2x3/18/
var newArr = [];
newArr = $.extend( [], self.Array(), newArr );
如何深度复制(或者确保数组不被链接):https://jsfiddle.net/t5a1xfud/18/
self.newItems(ko.toJS(self.existingItems()));
如何避免深度复制(也有其他方法):https://jsfiddle.net/t5a1xfud/19/
self.newItems(self.existingItems());
注意,在第二个例子中,当你使用"Copy to new"按钮后,数组将被链接。它们似乎没有链接,但如果你在"添加到现有"answers"添加到新"之间交替点击,你会发现它们确实相互影响。第一个例子不是这样的
相关文章:
- knockoutjs可观察数组
- 将js对象更改为使用嵌套的可观察数组敲除js视图模型
- 敲除:可观察数组没有被正确绑定——只有1个结果显示,而api返回6
- $scope$观察数组中的一个特定对象——Angular JS控制器
- 如何使用敲除映射将空值映射到空的可观察数组
- 无法观察Ember.js中的对象数组
- 以不同的方式对相同的可观察数组进行排序
- 如何在 Knockout.js 中更新可观察数组后立即使用 DOM 容器
- Knockout.js:如何根据可观察数组中的更改更改值
- 使用挖空.js如何刷新 Select 元素中的可观察数组
- 谷歌跟踪代码管理器使用什么模式来观察 de 'dataLayer' 数组
- 更新挖空中可观察数组中项目的属性
- 动态地向可观察数组中的特定项添加绑定(例如hasfocus)
- AngularJS:观察数组属性
- 对可观察数组foreach的更新删除了格式化knockoutjs
- 当通过Ajax成功回调更新可观察数组时,启用绑定中断
- 如何获取复选框值并将其插入到挖空中的可观察数组中
- 剔除不更新辅助表的可观察数组
- 如何让Knockout可观察数组与jQuery对话框一起工作
- 更改可观察数组会更改自定义绑定处理程序knockoutjs的可见性