gpt4 book ai didi

javascript - 如何从 Knockoutjs toJS() 中排除某些属性

转载 作者:可可西里 更新时间:2023-11-01 01:22:35 29 4
gpt4 key购买 nike

我有以下模型:

var model = {
A: 'One',
B: 'Two',
C: 'Three'
};

我将各种 UI 元素绑定(bind)到这些字段,效果很好。但是,我将模型转换回 JavaScript 对象,这样我就可以将任何更改保存到服务器:

var goingToServer = ko.toJS(model);

goingToServer 将包含属性 A、B 和 C。但是,假设属性 C 是一大块永远不会更改的数据。我想避免将其发送回服务器。

有没有办法让 toJS()在将模型转换回 JavaScript 对象时包含一组预定义的字段?

我一直在调查的一件事是 Knockout Mapping plugin .它有一个名为 include 的设置,记录如下:

When converting your view model back to a JS object, by default the mapping plugin will only include properties that were part of your original view model, except it will also include the Knockout-generated _destroy property even if it was not part of your original object. However, you can choose to customize this array:

但是,这个插件似乎并没有像文档中描述的那样工作,因为 ko.mapping.toJS() 仍然会包含 A、B 和 C,即使我传入了一个 include ['A', 'B'] 数组。我猜测此功能旨在包含原始模型中没有的其他字段。

有没有一种方法可以在将模型转换回 JavaScript 对象时排除某些属性,而不是做一些棘手的事情,例如生成对象并在发送到服务器之前手动删除我不需要的属性?

最佳答案

您是否尝试过 ignore 关键字?它的用法与 include 类似:

var mapping = {
'ignore': ["propertyToIgnore", "alsoIgnoreThis"]
}
var viewModel = ko.mapping.toJS(data, mapping);

当你做服务器数据的原始映射时,你可以只使用忽略,然后当你将它转换回 JS 时,它根本不会在你的对象上。

关于javascript - 如何从 Knockoutjs toJS() 中排除某些属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14988220/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com