剑道网格:添加新的行嵌套对象停止工作

Kendo Grid: add new row with nested object stopped working

本文关键字:嵌套 对象 停止工作 网格 添加      更新时间:2023-09-26

我用这种方式从嵌套的JSON中填充剑道数据网格:

https://stackoverflow.com/a/24441318/535556

一切都很好,直到我点击"添加新行"按钮。

然后我收到一个控制台错误消息:

"Uncaught TypeError: Cannot read property 'street' of undefined "

我想问如何正确格式化数据以获得更新数据的嵌套JSON对象?

感谢任何建议。

在没有为数据源定义模式模型的情况下添加新行时,正在创建的对象还没有"address"字段。包含"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: {} },
                },
            },
        },
        ...
    }),
});

现在,当你添加一个新的行,绑定对象的"地址"字段将是{}。"street","city"answers"state"字段当然是未定义的,但是它们的父对象"address"是定义的,所以当你访问它的字段时,你不会看到和错误。