2 回答

TA貢獻1796條經驗 獲得超4個贊
loader : new Ext.tree.JsonPluginTreeLoader({
url : 'findTree.action'
}),
root : new Ext.tree.AsyncTreeNode({text : '菜單', expanded:true}),
listeners : {
'click' : {
fn :this.onTreeNodeClick,
scope : this
},
'afterrender':{
fn : this.onExpandAll,
scope : this
}
}

TA貢獻1853條經驗 獲得超18個贊
對于ExtJS中的樹來說,樹加載器TreeLoader是一個比較關鍵的部件,樹加載器由Ext.tree.TreeLoader類定義,只有AsyncTreeNode才會使用TreeLoader。看下面的代碼:
Ext.onReady(function(){
var loader=new Ext.tree.TreeLoader({
//url:"treedata.js"
url:'AAA.do?content.method=getTreeNodes&parentId=0'
});
var root=new Ext.tree.AsyncTreeNode({
id:"root",
text:"根節點",
loader:loader});
var tree=new Ext.tree.TreePanel({
renderTo:"hello",
root:root,
width:100
});
});
首先我們使用Ext.tree.TreeLoader來初始化了一個TreeLoader對象,構造函數中的配置參數url表示獲得樹節點信息的url。然后在初始化根節點的時候我們使用的是AsyncTreeNode,在該節點中指定該節點的 laoder為前面定義的loader。執行這段程序,在點擊“根節點”時,會從服務器端指定root節點的子節點信息。
TreeLoader嚴格來說是針對樹的節點來定義的,可以給樹中的每一個節點定義不同的TreeLoader,默認情況下,如果一個 AsyncTreeNode節點在準備加載子節點的時候,如果該節點上沒有定義loader,則會使用TreePanel中定義的loader作為加載器。因此,我們可以直接在TreePanel上面指定loader屬性,這樣就不需要給每一個節點指定具體的TreeLoader了。
監聽TreePanel的beforeload(node)事件,當點擊不同的樹節點時,將樹節點ID傳到后臺獲得該node節點的下級節點。
如:tree.on('beforeload',function(node){
tree.loader.dataUrl='AAA.do?content.method=getTreeNodes&parentId='+node.id;
});
獲得TreeNode自定義屬性值的方法:node.attributes.XXX。XXX為自定義屬性。
添加回答
舉報