4

私の質問は: TreeStore を一度にロードするにはどうすればよいですか? 現在、プロキシを使用している場合、レンダリング後に Tree を取得するために、葉を展開すると、GET パラメータ'node'(葉ノードの ID) を含むもう 1 つの要求があるためです。だから私はこの葉の木で応答する必要があります。しかし、一度にすべてのツリーをロードしたいので、そのツリーに対するリクエストはもうありません。

今、私は以下のコードを持っています:

    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 では、次のように「子」属性を送信しました。

{
    "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 に答える