我通过这种方式从嵌套的JSON填充Kendo数据网格:
https://stackoverflow.com/a/24441318/535556
一切正常,直到我点击"添加新行"按钮。
然后我收到控制台错误消息:
"未捕获的TypeError:无法读取属性' street'未定义"
我想问一下如何正确格式化数据以获取具有更新数据的嵌套JSON对象?
非常感谢任何建议。
答案 0 :(得分:4)
当您在没有为dataSource定义模式模型的情况下添加新行时,正在创建的对象还没有"地址"领域。带有" 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: {} },
},
},
},
...
}),
});
现在,当您添加新行时,绑定对象"地址"字段将是{}。 " street"," city"和"州"字段当然是未定义的,但它们的父对象"地址"定义了IS,以便在访问它的字段时不会看到和出错。