Extjs 6 网格 + JSON

Extjs 6 grid + JSON

我有这个JSON:

{
    "aaa": {
        "list": {
            "count":"1",
            "data": [
                {"id":"1","username":"user1","email":"user1@test.com"}
            ]
        }
     }
}

这是我的店铺:

var store = Ext.create('Ext.data.Store', {
    fields : [ 'id', 
               'username', 
               'email'],
    autoLoad : true,
    proxy: {
        type: 'ajax',
        api: {
            read: 'server/users'
        },
        reader: {
            type: 'json',
            successProperty: 'success',
            root: 'data',
            messageProperty: 'message'
        }
    }
});

这是我的网格:

xtype: 'grid',
title: 'Users',
id: 'users', 
store: store,
columns: {
  items: [
    {text: 'ID', dataIndex: 'id', editor: 'textfield'},
    {text: 'Name', dataIndex: 'name', editor: 'textfield' },
    {text: 'Email', dataIndex: 'email', editor: 'textfield' },
]
},

但是这段代码不起作用。我没有在我的网格上显示 JSON 数据。我认为问题是我没有达到 JSON 个元素。
我怎样才能达到这些要素? (aaa.data.id、aaa.data.name、aaa.data.email 无效)

root 应该是 root: 'aaa.list.data'root 应该指向记录数组。 data 根本没有出现在返回的顶级对象中。这就像在说:

var o = {
    aaa: {
        data: [{}]
    }
}
console.log(o.data); // Nothing

由于您不想(或不能)更改您的 JSON 的结构,请将您商店中代理的 reader 更改为与您的 JSON.

reader: {
    type: 'json',
    rootProperty: 'aaa.list.data',
    totalProperty: 'aaa.list.count'
}

您可以使用 reader's transform method 在进行存储处理之前格式化数据。