首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将JSON代理返回的原始数据对象修改为供Tree Store使用的ExtJS对象

如何将JSON代理返回的原始数据对象修改为供Tree Store使用的ExtJS对象
EN

Stack Overflow用户
提问于 2020-02-07 15:23:59
回答 1查看 101关注 0票数 0

为了创建一个treepanel,我给它配置了一个treestore,它的AJAX代理url接收我无法控制的json数据。但是,在readRecords执行之前使用Ext.data.reader.Jsontransform property可调用,可以选择将从AJAX代理传递的原始(反序列化)数据对象修改为修改后的或全新的数据对象。transform配置给出了以下代码片段:

代码语言:javascript
运行
复制
Ext.create('Ext.data.Store', {
    model: 'User',
    proxy: {
        type: 'ajax',
        url : 'users.json',
        reader: {
            type: 'json',
            transform: {
                fn: function(data) {
                    // do some manipulation of the raw data object
                    return data;
                },
                scope: this
            }
        }
    },
});

我想要一个关于如何修改返回的JSON对象的示例

代码语言:javascript
运行
复制
[
{
    "id": 3,
    "attributes":
    {},
    "name": "user_one",
    "login": "",
    "email": "user_one@ats",
    "phone": "0751223344",
    "readonly": false,
    "administrator": false,
    "password": null
},
{
    "id": 4,
    "attributes":
    {},
    "name": "user_two",
    "login": "",
    "email": "user_two@ats",
    "phone": "0751556677",
    "readonly": false,
    "administrator": false,
    "password": null
}
]

转换为适合于树存储的JSON对象。

使用返回的JSON中的条件administrator==true来呈现分层树,以显示哪个用户属于哪个管理员,然后使用第二个AJAX请求返回管理员的用户。

代码语言:javascript
运行
复制
[
    {
        "user_id": 3,
        "admin_id": 1,
    },
    {
        "user_id": 4,
        "admin_id": 2,
    }
    ]
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-08 04:48:15

数据是嵌套的吗?否则为什么要使用treepanel而不是网格呢?对于你的问题,这取决于你如何配置你的treepanel,但它可能是这样的:

代码语言:javascript
运行
复制
        transform: {
            fn: function(data) {
                var treeRecords = Ext.Array.map(data, function(i){
                    return {
                        text: i.name,
                        leaf: true
                        //any other properties you want
                    }
                });

                var treeData = {
                    root: {
                        expanded: true,
                        children: treeRecords
                    }
                };

                return treeData;
            },
            scope: this
        }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60108827

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档