我试图克隆一个Knockout VM。 我找到了一些例子:
var oldType = new myVM();
var newType = ko.mapping.fromJS(ko.toJS(oldType));
它工作正常,但newType
现在是我想要的object
而不是myVM
类型。有没有办法将newType
指定为myVM
?
感谢。
答案 0 :(得分:1)
我的回答可能有些偏见,因为我不喜欢淘汰赛映射功能,我认为它会促进不良习惯。
如果我这样做,我会在myVM上创建一个构造函数,它接受myVM的一个实例作为参数,然后在构造函数中设置所有属性,并且我手动编写映射。
那就是说,你可以用淘汰赛映射做你想做的事情:
var oldType = new myVM();
var newType = new myVM();
ko.mapping.fromJS(ko.toJS(oldType), newType);
修改强> 刚检查了淘汰文档以刷新我的内存,你可能实际上需要将新类型作为第三个参数传递,第二个是空选项对象:
ko.mapping.fromJS(ko.toJS(oldType), {}, newType);
虽然example page似乎暗示两种方式都有效,但我怀疑。