1

ExtJs3 では、私のチームはデータをツリーストアにロードするために次のことを行いました。ExtJS4 でこれを行う同等の方法は何ですか? NodeInterface を使用して同様のコードを実行すると、「null のプロパティ '0' を読み取れません」というエラーが発生します。

Ext.Ajax.request({
            url: servlet,
            success: function(response, opts)
            {
                var jsonData = Ext.decode(response.responseText);

                var root = new Ext.tree.AsyncTreeNode({
                    text: 'Root test',
                    draggable: false,
                    id: 'root',
                    children: jsonData.tree.data
                });
                tree.setRootNode(root);
//...

更新:これを行う方法はあまり気にしません。2 つの要件があります。(1) 単一のサーバー リクエストを使用して無関係なデータを取得します。(2) 別のデータにツリーパネルとグリッドパネルを再利用する

動的に作成されたツリーパネルにデータをロードできました。ただし、setRootNode() を使用しても、既存のツリー パネルでは機能しません。

//this works
var tree = Ext.create('Ext.tree.Panel', {
          root: {
                text:'Application',
                expanded:true,
                children: jsonResponse.categoryTree.data
          }
        });

//this doesn't work
existingTree.setRootNode(root);
4

1 に答える 1

0

これまでのところ、「十分な」解決策は

  1. ツリーパネルをクラスに変える

データが変更されるたびに:

  1. ツリー パネルの前のインスタンス (存在する場合) を削除します。
  2. 新しいツリー パネルをインスタンス化する

「Ext JS 4」の方法ではありませんが、仕事は完了します。誰かが正しいやり方で私を啓発できない限り、私はこれを答えとしてフラグを立てています。

                var panel = Ext.ComponentQuery.query('panel#categorysearch')[0];

                //destroy the tree panel
                panel.remove('categorysearchtree', true);

                //create a new one
                var tree = Ext.create('MyApp.view.CategorySearchTreePanel', {
                    root: {
                        text:'Services', 
                        expanded:true,
                        children: jsonResponse.categoryTree.data
                    }
                });

                panel.add(tree);   
于 2013-03-11T15:11:27.167 に答える