最近學(xué)了下Extjs,感覺十分痛苦。特加是有些API不全,一個小問題弄半天弄不出來。今天遇到一個TabPanel的右鍵菜單的問題,本想做一個點右鍵關(guān)閉當前選項卡和其它的菜單,結(jié)果在TablePanel listerners一的事件里面寫的如下代碼。

Code
listeners:{
contextmenu:function(t,cur,e){
if(!this.cmenu){
this.cmenu=new Ext.menu.Menu({
items:[{
id:tab.id+'-close',
text:'Close',
handler:function(){
tab.remove(cur);
}
},{
text:'Close Other'
},{
text:'Close All'
}]
})
}
e.stopEvent();
this.cmenu.showAt(e.getPoint());
}
}
結(jié)果發(fā)現(xiàn)在怎么都不行,每次只能關(guān)閉一次,每二次就不行了。最后查了半天,在網(wǎng)上找了很久也沒找到。郁悶之及。還是在它的API文檔里面發(fā)現(xiàn)有類似的??戳怂拇a后改造了下

Code
cmenu:false,
ctxItem:false,
listeners:{
contextmenu:function(t,cur,e){
if(!this.cmenu){
this.cmenu=new Ext.menu.Menu({
items:[{
id:tab.id+'-close',
text:'Close',
handler:function(){
tab.remove(tab.ctxItem);
}
},{
text:'Close Other'
},{
text:'Close All'
}]
})
}
e.stopEvent();
tab.ctxItem=cur;
this.cmenu.showAt(e.getPoint());
}
}
這下才行,我發(fā)現(xiàn)在TabPanel的contextmenu事件有點小貓膩,每二個參數(shù)說的是傳的當前的tab結(jié)果在colse里面得不到。還是你每下次點擊的那個tab,所以要設(shè)置一個全局的變量來保存。這里我用的是ctxItem。希望以后誰遇到這個問題能好些。