我有以下模型:
var model = {
A: 'One',
B: 'Two',
C: 'Three'
};
我将各种 UI 元素绑定到这些字段,效果很好。但是,我将模型转换回 JavaScript 对象,以便可以将任何更改保存到服务器:
var goingToServer = ko.toJS(model);
goingToServer
将包括属性 A、B 和 C。但是,假设属性 C 是一个永远不会改变的巨大数据块。我想避免将其发送回服务器。
有没有办法在将模型转换回 JavaScript 对象时toJS()
只包含一组预定义的字段?
我一直在调查的一件事是Knockout Mapping 插件。它有一个名为include的设置,记录如下:
将您的视图模型转换回 JS 对象时,默认情况下,映射插件将仅包含原始视图模型的一部分的属性,但它还将包含 Knockout 生成的 _destroy 属性,即使它不是原始对象的一部分. 但是,您可以选择自定义此数组:
但是,这个插件似乎不像文档中那样工作,因为它ko.mapping.toJS()
仍然包括 A、B 和 C,即使我传入include
一个['A', 'B']
. 我猜这个功能旨在包括原始模型中没有的其他字段。
有没有办法在将模型转换回 JavaScript 对象时排除某些属性,而不是做一些 hacky,例如生成对象并在发送到服务器之前手动删除我不想要的属性?