使用ko.mapping.fromJS后指定对象类型

时间:2014-12-15 14:41:45

标签: javascript knockout.js knockout-mapping-plugin

我试图克隆一个Knockout VM。 我找到了一些例子:

var oldType = new myVM();
var newType = ko.mapping.fromJS(ko.toJS(oldType));

它工作正常,但newType现在是我想要的object而不是myVM类型。有没有办法将newType指定为myVM

感谢。

1 个答案:

答案 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似乎暗示两种方式都有效,但我怀疑。