Javascript 敲除克隆不适用于函数实例
基本上,我所读到的内容以及迄今为止我在克隆数组时使用的内容都是这样的:Javascript 敲除克隆不适用于函数实例,javascript,knockout.js,reference,clone,ko.observablearray,Javascript,Knockout.js,Reference,Clone,Ko.observablearray,基本上,我所读到的内容以及迄今为止我在克隆数组时使用的内容都是这样的: var clonedArray=ko.observatarray(originalArray().slice(0)) 但在以下情况下,它似乎不起作用: var field = function(settings){ var _self = this; _self.Id = settings.Id; _self.Flag = ko.observable(settings.Flag); return
var clonedArray=ko.observatarray(originalArray().slice(0))代码>
但在以下情况下,它似乎不起作用:
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());
答复
提及
我面临着同样的任务;克隆可观测阵列。唯一的
为什么我能想出办法,就是把可观测的转换成
JS对象,然后将该对象转换为可观察对象。这个
以下函数需要KnockoutJS映射插件:
您创建了阵列的浅层克隆。因此,每个数组都包含对原始数组所引用对象的相同引用。我想你想做一个深度克隆…@JeffMercado是的,你是对的。我更新了我的问题以包含答案。不,不要这样做,如果你有问题的答案,请将其作为答案发布。
function cloneObservable(observableObject) {
return ko.mapping.fromJS(ko.toJS(observableObject));
}