【发布时间】:2013-02-05 22:45:30
【问题描述】:
我有以下型号:
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。它有一个名为 include 的设置,记录如下:
将视图模型转换回 JS 对象时,默认情况下 映射插件将仅包含属于您的一部分的属性 原始视图模型,除了它还将包括 剔除生成的 _destroy 属性,即使它不是您的一部分 原始对象。但是,您可以选择自定义此数组:
但是,该插件似乎无法按文档说明工作,因为 ko.mapping.toJS() 仍将包含 A、B 和 C,即使我传入 ['A', 'B'] 的 include 数组也是如此。我猜这个功能旨在包含原始模型中没有的附加字段。
有没有办法在将模型转换回 JavaScript 对象时排除某些属性,而不是做一些 hacky,例如生成对象并在发送到服务器之前手动删除我不想要的属性?
【问题讨论】:
标签: javascript knockout.js knockout-mapping-plugin