如何在EXTJS 4网格中显示嵌套的Json数据?

gau*_*avp 12 grid json nested extjs extjs4

我正在使用ExtJS 4.0,我想在网格中显示嵌套的JSON数据.为此,我使用Ext.data.reader.Reader文档"加载嵌套数据"中给出的示例.它既简单又简单但现在我想在网格中显示这些数据.我该怎么设置dataIndex

这是我的样本模型和商店:

Ext.define("data", {
    extend: 'Ext.data.Model',
    fields: ['year', 'state'],
    hasMany: {
        model: 'record',
        name: 'record'
    },
    proxy: {
        type: 'rest',
        url: 'Column.json.php',
        reader: {
            type: 'json',
            root: 'data'
        }
    }
});

Ext.define("record", {
    extend: 'Ext.data.Model',
    fields: ['id', 'autorization', 'expendture'],
    belongsTo: 'User'
});
var store1 = new Ext.data.Store({
    model: "data"
});
Run Code Online (Sandbox Code Playgroud)

而我的JSON:

{
    "data": [{
        "year": "2010",
        "state": "MP",
        "record": [{
            "id": "auth",
            "autorization": "9.201"
        }, {
            "id": "exp",
            "expendture": "1.250"
        }]
    }]
}
Run Code Online (Sandbox Code Playgroud)

我想阅读autorizationexpendture使用id

rdo*_*gan 13

您必须使用mappingconfg in字段在Model/Record级别执行此操作,因此您可以执行以下操作:

Ext.define("record", {
    extend: 'Ext.data.Model',
    fields: [
        'id',
        {name: 'autorization', mapping: 'record[0].autorization'},
        {name: 'expendture', mapping: 'record[1].expendture'}
    ],
    belongsTo: 'User'
});
Run Code Online (Sandbox Code Playgroud)

值得注意的是,在Sencha论坛上提问可能会更快.

  • "在Sencha论坛上提问可能会更快",具有讽刺意味的是,我通过Sencha论坛上的链接找到了这个问题. (11认同)