立即加载TreeStore。 Etxjs 4

时间:2012-08-18 21:02:41

标签: extjs tree

我的问题是:我如何一次加载TreeStore? 因为现在,如果我使用代理,获取Tree,在渲染之后,当我展开叶子时,还有一个请求使用GET参数'node' - 叶节点的id。所以我需要用这个叶子的树来响应...但是我想立刻加载所有树而不再需要那棵树。

现在我有这些代码:

    Ext.define('AdminPanel.TreeNavigation', {              
        extend: 'Ext.data.Model',  
        fields: ['id', 'text', 'leaf', 'children']  
    });


    var store = Ext.create('Ext.data.TreeStore', {

                    model: 'AdminPanel.TreeNavigation',  

                    proxy: {  
                        type: 'ajax',
                        url : 'admin/getTreeNav',
                        reader: {
                            type: 'json',
                            root: 'result'
                        }
                    },

                    root: {
                        expanded: true
                    }

                });

2 个答案:

答案 0 :(得分:2)

在商店中,我将读者根设置为“结果”。

但是在json_data中我发送了'children'属性,就像那样:

{
    "result": [{
        "text": "\u041d\u043e\u0432\u043e\u0441\u0442\u0438",
        "leaf": true,
        "children": []
    }, {
        "text": "\u0410\u043a\u0446\u0438\u0438",
        "leaf": true,
        "children": []
    }, {
        "text": "\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438",
        "leaf": true,
        "children": []
    }, {
        "id": "lang",
        "text": "\u042f\u0437\u044b\u043a",
        "leaf": false,
        "children": [{
            "text": "\u041a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b",
            "leaf": true,
            "children": []
        }]
    }]
}

但需要这样:

{
    "result": [{
        "text": "\u041d\u043e\u0432\u043e\u0441\u0442\u0438",
        "leaf": true,
        "result": []
    }, {
        "text": "\u0410\u043a\u0446\u0438\u0438",
        "leaf": true,
        "result": []
    }, {
        "text": "\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438",
        "leaf": true,
        "result": []
    }, {
        "id": "lang",
        "text": "\u042f\u0437\u044b\u043a",
        "leaf": false,
        "result": [{
            "text": "\u041a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b",
            "leaf": true,
            "result": []
        }]
    }]
}

因此,Tree将在TreePanel上加载所有数据。

答案 1 :(得分:0)

您需要以递归方式从children数组中的服务器发送子节点。 您不需要模型上的叶子和子属性,因为模型将自动包含具有这些和更多属性的NodeInterface类(请参阅完整属性列表的API)