我有以下模型:
var model = {
A: 'One',
B: 'Two',
C: 'Three'
};
我将各种 UI 元素绑定到这些字段,效果很好。不过,我将模型转换回 JavaScript 对象,以便可以将任何更改保存到服务器:
var goingToServer = ko.toJS(model);
goingToServer
将包括属性 A、B 和 C。但是,假设属性 C 是一大块永远不会改变的数据。我想避免将其发送回服务器。
有没有办法制作toJS()
only将模型转换回 JavaScript 对象时包含一组预定义的字段?
我一直在调查的一件事是淘汰赛映射插件 http://knockoutjs.com/documentation/plugins-mapping.html。它有一个名为include其记录如下:
当你的视图模型转换回 JS 对象时,默认情况下
映射插件将仅包含属于您的一部分的属性
原始视图模型,除了它还将包括
淘汰生成的 _destroy 属性,即使它不是您的一部分
原始对象。但是,您可以选择自定义此数组:
但是,该插件似乎无法按记录工作,如下所示ko.mapping.toJS()
即使我传入一个,仍然会包含 A、B 和 Cinclude
的数组['A', 'B']
。我猜这个功能的目的是包括额外的原始模型中不存在的字段。
有没有一种方法可以在将模型转换回 JavaScript 对象时排除某些属性,而无需执行一些黑客操作,例如生成对象并在发送到服务器之前手动删除我不需要的属性?
你有没有尝试过ignore
关键词?它的用法与 include 类似:
var mapping = {
'ignore': ["propertyToIgnore", "alsoIgnoreThis"]
}
var viewModel = ko.mapping.toJS(data, mapping);
当你对服务器数据进行原始映射时,你可以只使用ignore,那么当你将其转换回JS时,它根本不会出现在你的对象上。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)