我正在尝试克隆 Knockout 虚拟机。 我发现了一些这样做的例子:
var oldType = new myVM();
var newType = ko.mapping.fromJS(ko.toJS(oldType));
它工作正常,但 newType
现在是一个 object
而不是我想要的 myVM
类型。有没有办法将 newType
指定为 myVM
?
谢谢。
最佳答案
我的回答可能有些偏见,因为我不喜欢 knockout 映射功能,我认为它会养成坏习惯。
如果我这样做,我会在 myVM 上创建一个构造函数,它接受 myVM 的实例作为参数,然后在构造函数中设置所有属性,然后我会手动编写映射。
也就是说,您可以使用 knockout 映射来做您想做的事情:
var oldType = new myVM();
var newType = new myVM();
ko.mapping.fromJS(ko.toJS(oldType), newType);
编辑 刚刚检查了 knockout 文档以刷新我的内存,您实际上可能需要传递新类型作为第三个参数,并将空选项对象作为第二个参数:
ko.mapping.fromJS(ko.toJS(oldType), {}, newType);
尽管example page似乎表明这两种方式都是有效的,但我对此表示怀疑。
关于javascript - 使用ko.mapping.fromJS后指定对象类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27486520/