Javascript ko.mapping.defaultOptions().include应该是数组或字符串

Javascript ko.mapping.defaultOptions().include应该是数组或字符串,javascript,knockout.js,knockout-mapping-plugin,Javascript,Knockout.js,Knockout Mapping Plugin,我正在使用knockout js,我正在尝试克隆一个视图模型,以便将其添加到网格中。 这就是我正在做的: var newModel = new ko.mapping.fromJS(ko.mapping.toJS(self)); 但我得到: Error: ko.mapping.defaultOptions().include should be an array or string. ...fault:a[d]=g}}return a}function i(){var a=e.utils.ar

我正在使用knockout js,我正在尝试克隆一个视图模型,以便将其添加到网格中。 这就是我正在做的:

var newModel = new ko.mapping.fromJS(ko.mapping.toJS(self));
但我得到:

Error: ko.mapping.defaultOptions().include should be an array or string.

...fault:a[d]=g}}return a}function i(){var a=e.utils.arrayPushAll([{},q],arguments)...

我做错了什么?

您必须删除
新建
关键字:

var newModel = ko.mapping.fromJS(ko.mapping.toJS(self));
但这是一种创建副本的糟糕方式。如果您也在使用
jQuery
,请尝试以下操作:

var newModel = jQuery.extend(true, {}, self);

你能发布你的视图模型吗?var newModel=ko.mapping.fromJS(ko.mapping.toJS(self));对我来说不起作用,但jquery版本起了作用。为什么主干网不利于创建副本?它是淘汰映射,而不是主干网。这是不好的,因为它做了很多冗余的映射操作,而不仅仅是克隆对象。不,这不好,因为我不想复制绑定!使用jQuery克隆之后,如果我更改了输入元素,那么克隆的对象也会更改!为什么会这样:var newModel=ko.mapping.fromJS(ko.mapping.toJS(self));为我抛出那个例外?。。