我有以下型号:如何排除Knockoutjs toJS()某些性质
var model = {
A: 'One',
B: 'Two',
C: 'Three'
};
我结合各种UI元素,以这些领域,它的伟大工程。不过,我转换模型回JavaScript对象,所以我可以保存到服务器的任何变化:
var goingToServer = ko.toJS(model);
goingToServer
将包括性质A,B和C.然而,假设属性C是数据的大块那永远不会改变。我想避免将其发送回服务器。
有没有办法让toJS()
只有在将模型转换回JavaScript对象时包含一组预定义的字段?
我一直在调查的一件事是Knockout Mapping plugin。它有一个叫做设置包括其被记录为,例如:
当转换视图模型回JS对象,默认情况下 映射插件将仅包含属于你的 原始视图模型的一部分属性,除非它还包含 淘汰赛生成的_destroy属性,即使它不是您原始对象的一部分。但是,您可以选择自定义这个数组:
但是,它出现在一个include
阵列的['A', 'B']
作为证明这个插件不起作用,因为ko.mapping.toJS()
仍然将包括A,B和C,即使我通过。我猜这个功能的目的是包括额外的字段,这些字段不在原始模型中。
当将模型转换回JavaScript对象时,有没有办法排除某些属性,做了一些hacky之类的事情,比如生成对象并手动删除我不想在发送到服务器之前的属性?
那是不行的,因为那么你就不能绑定到它。 – 2013-02-20 19:47:50
你试过了吗?由于文档没有提到在返回JS对象时是否可以使用忽略。 – 2013-02-20 20:02:25
是的,我刚试过。当我忽略字段Notes时,当我调用applyBindings时,我立即发现在模型中找不到Notes字段。 – 2013-02-20 20:04:24