0

我有这个 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 不工作)

4

3 回答 3

1

由于您不想(或不能)更改 JSON 的结构,请将商店中代理的读取器更改为与 JSON 的数据结构相对应。

reader: {
    type: 'json',
    rootProperty: 'aaa.list.data',
    totalProperty: 'aaa.list.count'
}
于 2015-09-15T20:32:48.377 回答
0

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

var o = {
    aaa: {
        data: [{}]
    }
}
console.log(o.data); // Nothing
于 2015-09-15T20:31:01.610 回答
0

您可以在存储处理发生之前使用读取器的转换方法来格式化数据。

于 2015-09-15T20:44:57.507 回答