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

标签 javascript knockout.js knockout-mapping-plugin

我正在尝试克隆 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/

相关文章:

javascript - 允许在移动设备上滚动的 Durandal 模式/对话框上下文

javascript - 为什么我不能在同一个表中两次使用 datepicker?

Knockout.js 映射不绑定(bind)子模型

javascript - 嵌套 json 的 knockout 映射

c# - 如何在jquery对话框窗口弹出之前将数据绑定(bind)到图表?

javascript - 这是因为 Javascript 是单线程的吗?

knockout.js - 用 knockout 调整我的输入文本框

javascript - 使用 ko.toJSON 时传递一个返回 ko.compulated Error 值的函数

javascript - 如何在 jsGrid 的列中打印原始 HTML 代码?

javascript - 将高分列表添加到文本框 VB2010