red*_*rom 1 javascript json nested kendo-grid
我通过这种方式从嵌套 JSON 填充 Kendo 数据网格:
一切正常,直到我单击“添加新行”按钮。
然后我收到控制台错误消息:
“未捕获类型错误:无法读取未定义的属性‘街道’”
我想问如何正确格式化数据以获得包含更新数据的嵌套JSON对象?
非常感谢您的任何建议。
当您在没有为数据源定义架构模型的情况下添加新行时,正在创建的对象尚不具有“地址”字段。包含“address.street”的列试图从新对象的“address”字段中获取“street”字段,该字段此时尚未定义,因此会出现错误。
坏消息是模式模型定义并不真正适合嵌套类型。好消息是,您可以定义一个 defaultValue 为 {} 的“地址”字段,并且网格编辑器应该会满意。
$("#myGrid").kendoGridEx({
...
columns: [
{ field: "address.street" },
{ field: "address.city" },
{ field: "address.state" },
...
],
dataSource: new kendo.data.DataSourceEx({
...
schema: {
model: {
id: "Id",
fields: {
address: { defaultValue: {} },
},
},
},
...
}),
});
Run Code Online (Sandbox Code Playgroud)
现在,当您添加新行时,绑定对象的“地址”字段将为 {}。“街道”、“城市”和“州”字段当然是未定义的,但它们的父对象“地址”已定义,因此在访问其字段时您不会看到错误。