1

主なタスクは、ツリーパネルがロードされた後、ajaxを使用して動的に1つのブランチを開くことです。ユーザーはクリックしないでください。ページが読み込まれた後、それ自体が展開されます。

アフターレンダーイベントを使用してノードを再帰的にロードしようとしました。しかし、現在のツリーオブジェクトを取得できません。このステップでは空です。

これは、expandAll呼び出しのようなものです。このコードは、アフターレンダリングイベントでも機能しません。

  tree.expandAll(function() {
     tree.getEl().unmask();
    toolbar.enable();
  });

では、ajaxを使用してノードをロードするにはどうすればよいですか?

更新1: 上記のコードは現在機能しています。「ツリー」定義の後にこのコードを追加するだけです。しかし、問題はまだここにあります。ajaxを使用して1つのノードをどのようにロードしますか?

4

1 に答える 1

0

ほとんどの例のようにツリーストアを使用できませんか?その場合、ツリーはストアにノードを自動的に要求し、ストアはサーバーからノードをロードします。サーバーコードを指定すると、特定のノードを指定してブランチを送り返すことができます。

TreeStoreを使用してサーバーに対して機能するツリーのSenchaKitchenSinkデモを参照してください。

Chromeで開発者ツールを開いて[ネットワーク]タブに移動し、ツリー内のノードを展開すると、TreeStoreがIDを指定して「get-nodes.php」からデータをリクエストすることにより、そのノードの子を自動的にロードすることがわかります。拡張されたノードの。

ノードを呼び出すだけで、ノードを拡張できます.expand()

それが機能しない場合は、モデルをロードし、モデルができたら、ツリーに追加して、次のように親を展開します。

MyApp.model.MyTreeModel.load(someId, {
    success: function (record, operation) {
        // If the third param is true the search will be recursive from the supplied node
        var node = tree.getRootNode().findChild('id', someParentId, true);
        node.addChild(record);
        node.expand();
    },
    scope: this
}); 

あなたの質問は少し広いので、これが途中であなたを助けることを願っています。

ツリーの操作方法については、Ext.data.NodeInterfaceのドキュメントを参照してください。

于 2013-04-19T07:51:37.423 に答える