Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/473.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 敲除克隆不适用于函数实例_Javascript_Knockout.js_Reference_Clone_Ko.observablearray - Fatal编程技术网

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));
}