2 回答

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超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貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超18個贊
對于ExtJS中的樹來說,樹加載器TreeLoader是一個比較關(guān)鍵的部件,樹加載器由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:"根節(jié)點(diǎn)",
loader:loader});
var tree=new Ext.tree.TreePanel({
renderTo:"hello",
root:root,
width:100
});
});
首先我們使用Ext.tree.TreeLoader來初始化了一個TreeLoader對象,構(gòu)造函數(shù)中的配置參數(shù)url表示獲得樹節(jié)點(diǎn)信息的url。然后在初始化根節(jié)點(diǎn)的時候我們使用的是AsyncTreeNode,在該節(jié)點(diǎn)中指定該節(jié)點(diǎn)的 laoder為前面定義的loader。執(zhí)行這段程序,在點(diǎn)擊“根節(jié)點(diǎn)”時,會從服務(wù)器端指定root節(jié)點(diǎn)的子節(jié)點(diǎn)信息。
TreeLoader嚴(yán)格來說是針對樹的節(jié)點(diǎn)來定義的,可以給樹中的每一個節(jié)點(diǎn)定義不同的TreeLoader,默認(rèn)情況下,如果一個 AsyncTreeNode節(jié)點(diǎn)在準(zhǔn)備加載子節(jié)點(diǎn)的時候,如果該節(jié)點(diǎn)上沒有定義loader,則會使用TreePanel中定義的loader作為加載器。因此,我們可以直接在TreePanel上面指定loader屬性,這樣就不需要給每一個節(jié)點(diǎn)指定具體的TreeLoader了。
監(jiān)聽TreePanel的beforeload(node)事件,當(dāng)點(diǎn)擊不同的樹節(jié)點(diǎn)時,將樹節(jié)點(diǎn)ID傳到后臺獲得該node節(jié)點(diǎn)的下級節(jié)點(diǎn)。
如:tree.on('beforeload',function(node){
tree.loader.dataUrl='AAA.do?content.method=getTreeNodes&parentId='+node.id;
});
獲得TreeNode自定義屬性值的方法:node.attributes.XXX。XXX為自定義屬性。
添加回答
舉報(bào)