我在一个使用来自 RESTful API 的 JSON 的富 Web 客户端中使用了Knockout.js + Knockout 映射插件+ jQuery的组合。
我需要一些关于如何在我的视图模型中处理空值的指导。这是我的场景和我遇到的问题:
REST API 返回的大多数数据成员都是可以为空的。为了解决这个问题,我将一个带有空值的 JSON 样本传递给映射插件:
um.jsonMaps.campaign = {
"priority": null,
"recipientListId": null,
"autoPrepare": null,
"timeToSend": null
}
我像这样进行初始绑定:
this.model = ko.mapping.fromJS(um.jsonMaps.campaign);
以下是来自 API 调用的一些数据:
var data= {
"priority": 95,
"recipientListId": "a2aac72a-59f6-45da-a636-a48cc2b20137",
"autoPrepare": false,
"timeToSend": null
}
...它是这样绑定的:
ko.mapping.fromJS(data, this.viewModel.model);
问题在于,如果用户修改或触摸绑定到此数据的任何 UI 元素,他们会隐式地将模型中的数据成员转换为带引号的字符串字面量。因此,如果用户添加一些文本并将其删除,整数95将变为“95” 。如果在 UI 中触摸了 API 中为 null 的值,则它变为“”(例如空字符串)。
我需要整数和空值在编辑后保留为整数和空值。