ExtJs根节点

时间:2013-04-04 15:54:48

标签: extjs extjs4.1

如果我得到像这样的Json,那么root属性值是什么:

{
    "status": {
        "status": 0,
        "msg": "Ok",
        "protocolversion": "extjs.json"
    },
    "value": {
        "table": [
            [
                "admin",
                "Administrator",
                ""
            ],
            [
                "test",
                "Test",
                ""
            ]
        ],
        "total": 2
    }
}

数据将显示在gridpanel中,1行为admin,1行为test等。

尝试:

valuevalue.table

如何让它发挥作用?

2 个答案:

答案 0 :(得分:1)

value.table对于root属性是正确的,但是您使用的是json格式,我认为默认情况下Ext不会设置为处理。它有一个用于json的读取器,用于对象数组,而不是没有对象映射信息的嵌套字段值数组。

如果必须使用该格式,则需要创建自己的读者/编写器或仅使用Ext.Ajax.request(),并在回调中将嵌套数组解析为对象。类似的东西:

Ext.Ajax.request({
    url: 'path.com/to/content',
    success: function (response, operation) {
        var data = Ext.JSON.decode(response.responseText);
        var fields = data.value.table;
        var records = [];
        Ext.Array.each(fields, function (fieldArray, fieldIndex) {
            Ext.Array.each(fieldArray, function(fieldValue, valueIndex) {
                //Create record object if it doesn't exist
                var record = records[valueIndex] || {};
                //Create a switch statement based on the array index to set fields
                switch(fieldIndex) {
                    case 0:
                        record.User_id = fieldValue;
                        break;
                    case 1:
                        record.Username = fieldValue;
                        break;
                }
            });
        });

        //Add the objects to the empty store
        store.add(records);
    }
});

这不是一种生产解决方案,因为它不会处理列表末尾的空字符串,或者每个字段都有一个锯齿状的数组数组,我无法想象该怎么做。如果它在你的控制或影响范围内,我会建议使用更像Ext建议的格式,这样你就可以使用内置的json代理/读者/编写器,或者对它疯狂并实现ext的远程过程调用格式:

{
    "success": true,
    "message": "Success",
    "data": [
        {
            "User_id": "admin",
            "Username": "Administrator"
        }, {
            "User_id": "admin",
            "Username": "Administrator"
        }
    ]
}

答案 1 :(得分:0)

在上面的例子中,“value”是root属性。但对于JSON阅读器,它是一个属性名称(如果根目录是嵌套的,则是以点分隔的属性名称列表)。

因此您可以在自己的字段中分配以下内容。

字段:[ 'table.admin', 'table.test']