根据我的理解,你试图做的是,当用户没有登录时,你想激活显示登录表单的选项卡项,而不是在弹出窗口或消息框中显示一些消息。
所以与其听
activeitemchange
事件,应进行登录检查
活动项目之前
改变但没有这样的事件。我试着用
addBeforeListener
对于
活动项更改
但它属于递归调用。所以我试着
addAfterListener
对于
活动项更改
它奏效了。这是我试过的,
Ext.create('Ext.TabPanel', {
fullscreen: true,
tabBarPosition: 'bottom',
defaults: {
styleHtmlContent: true
},
items: [
{
title: 'First Tab',
iconCls: 'broadcast',
html: 'First Tab'
},
{
title: 'Second Tab',
iconCls: 'user_fav',
html: 'Second Tab'
},
{
title: 'Third Tab',
iconCls: 'user3',
html: 'Third Tab'
},
{
title: 'Forth Tab',
iconCls: 'address_book',
html: 'Forth Tab'
},
{
title: 'Fifth Tab',
iconCls: 'user',
html: 'Fifth Tab'
}
],
listeners:{
initialize:function(){
var counter = 1;
this.addAfterListener("activeitemchange",function(){
counter += 1;
if(counter >= 4){
if(this.getActiveItem().title !="First Tab")
this.setActiveItem(0);
else
return false;
}
});
}
}
});
我试着模仿
已登录/已注销
使用计数器的情况。因此,当计数器达到>=时4,选项卡面板将活动项目设置为第一个项目。在这里,我使用了title来标识当前处于活动状态的项目。如果当前活动项目是“第一个选项卡”(在您的情况下,它是登录表单的标题),那么什么都不要做。
试试看,它有效。