さて、私はこのサイトをプレイフレームワークにまとめています。基本的にバックエンドのFTPサイトに接続し、フォルダー/ファイルのリストを取得して、それを基本的なExtJSフロントエンドにJSONとして送信します。
ツリーパネルが正しく入力されるように機能していますが、非リーフノードを展開しても特別なことは何も行われていないようです。
私が読んだものに基づいて、データURLを使用し、ノードのIDを持つノードパラメータをそのデータURLに渡して、子ノードのデータを取得する必要がありますが、firebugではリクエストが表示されませんそのデータのために送信されます。
ノードが展開されたときに子を持つノードが動的に子を取得できるように、ajax呼び出しを起動できるようにするにはどうすればよいですか?
参照用の関連コードは次のとおりです。
Ext.onReady(function() {
new Ext.Viewport({
layout: 'border',
defaults: {
height: 100,
width: 250,
collapseMode: 'mini'
},
items : [
{
region: 'center',
margins: '5 5 0 0',
contentEl: 'center-content'
},
{
id: 'file-tree',
region: 'west',
title: 'Files',
split: true,
collapsible: true,
xtype: 'treepanel',
autoScroll: true,
loader: new Ext.tree.TreeLoader({
dataUrl: 'http://localhost:9000/application/listFiles',
}),
root: new Ext.tree.AsyncTreeNode({
expand: true,
text: "/",
id: "/"
}),
rootVisibile: true,
listeners: {
click: function(n) {
Ext.Msg.alert('File Tree Click', 'You clicked: ' + n.attributes.id);
}
}
}
]
});
});
JSONで返されるIDは、展開したいサブディレクトリへの完全なパスであり、listfilesアクションはそのパラメーターを受け取り、適切なファイルを返します。
リクエストに応じて、JSON出力のスニペットを次に示します。
[
{
id: "/./",
text: "./",
leaf: false,
children: [ ]
},
{
id: "/../",
text: "../",
leaf: false,
children: [ ]
},
{
id: "/.ftpquota",
text: ".ftpquota",
leaf: true,
children: [ ]
},
{
id: "/.htaccess",
text: ".htaccess",
leaf: true,
children: [ ]
},
{
id: "/022610.html",
text: "022610.html",
leaf: true,
children: [ ]
},
{
id: "/Gail/",
text: "Gail/",
leaf: false,
children: [ ]
}
]
その最後の項目は、子を動的にロードするために探しているフォルダーの例です。