4

我的问题是:如何一次加载 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
                    }

                });
4

2 回答 2

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 中加载所有数据。

于 2012-08-19T11:06:39.390 回答
0

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

于 2012-08-19T04:31:21.017 回答