В основном то, что я читал и что я использовал до сих пор для клонирования массива без каких-либо ссылок между ними, выглядит примерно так:
var clonedArray = ko.observableArray(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());