Extjs 中 TablPanel contextmenu 事件

      最近学了下Extjs,感觉十分痛苦。特加是有些API不全,一个小问题弄半天弄不出来。今天遇到一个TabPanel的右键菜单的问题,本想做一个点右键关闭当前选项卡和其它的菜单,结果在TablePanel listerners一的事件里面写的如下代码。
ContractedBlock.gif ExpandedBlockStart.gif 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());
                    }
                }
      结果发现在怎么都不行,每次只能关闭一次,每二次就不行了。最后查了半天,在网上找了很久也没找到。郁闷之及。还是在它的API文档里面发现有类似的。看了它的代码后改造了下
ContractedBlock.gif ExpandedBlockStart.gif 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());
                    }
                }

 

这下才行,我发现在TabPanel的contextmenu事件有点小猫腻,每二个参数说的是传的当前的tab结果在colse里面得不到。还是你每下次点击的那个tab,所以要设置一个全局的变量来保存。这里我用的是ctxItem。希望以后谁遇到这个问题能好些。

转载于:https://www.cnblogs.com/maweidream/archive/2009/05/22/1487290.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值