【发布时间】:2014-04-24 12:23:32
【问题描述】:
基本上,我阅读的内容和迄今为止用于克隆数组而没有任何引用的内容是这样的:
var clonedArray = ko.observableArray(originalArray().slice(0));
但在下面的 example 中它似乎不起作用:
var field = function(settings){
var _self = this;
_self.Id = settings.Id;
_self.Flag = ko.observable(settings.Flag);
return _self;
};
var viewModel = function(){
var _vm = this;
_vm.fields = ko.observableArray([
new field({Id: 1, Flag: true}),
new field({Id: 2, Flag: false})
]);
_vm.fieldsCloned = ko.observableArray(_vm.fields().slice(0));
return _vm;
};
ko.applyBindings(new viewModel());
【问题讨论】:
-
您创建了一个数组的 shallow 克隆。因此,每个数组都包含对原始数组所指对象的相同引用。我想你想进行深度克隆......
-
@JeffMercado 是的,你是对的。我更新了我的问题以包含答案。
-
不,不要那样做,如果您有问题的答案,请将其作为答案发布。
标签: javascript knockout.js reference clone ko.observablearray