【发布时间】:2013-04-09 01:59:28
【问题描述】:
当谈到 Kendo 中的绑定行为时,似乎有一个相当奇特的设计决定。
我正在尝试将一个可为空的值绑定到一个下拉列表。如果(远程来源的)值为 null,则 Kendo 将生成对象以绑定到该值,例如,使用下拉列表的 data-value-field/value。 这使得保存修改后的视图模型非常不可靠,因为现在将传输整个对象而不是简单的数据类型。
示例:
Schedule.WeekNumber 是 null。从 DropDown 中选择一个值后,如
<select data-role="dropdownlist" name="scheduleWeekOfMonth"
data-bind="value:WeekNumber">
<option value="">Every week</option>
<option value="0">First week of month (1.-7.)</option>
<option value="1">Second week of month (8.-14.)</option>
<option value="2">Third week of month (15.-21.)</option>
<option value="3">Last week of month (22.+)</option>
</select>
那么值 (JSON) 是 Object {text: "First week of month (1.-7.)", value: "0"} 而不是 "0"
有人对此有好的解决方案吗? - 除了在加载时替换视图模型的所有空值,例如:
function deNull(obj) {
if(obj !== null && typeof obj === "object") {
$.each(obj, function(index, value) {
if(value !== null && typeof value === "object") {
deNull(obj[index]); // we must go deeper (BRRRRRRRAAAAAWWWWRWRRRMRMRMMRMRMMMMM)
}
if(value === null) {
obj[index] = ""; // workaround, this is the "null" equivalent of not being set
//console.log("De-nulled: " + index);
}
});
}
}
【问题讨论】:
标签: data-binding mvvm kendo-ui