ExtJS选项卡面板SetActiveTab正在还原回0

ExtJS选项卡面板SetActiveTab正在还原回0,extjs,extjs-mvc,Extjs,Extjs Mvc,我有一个选项卡面板,您可以单击按钮创建新选项卡。当按钮被单击时,它会创建新的选项卡NotIssue,但当我调用setActiveTab时,它似乎什么也不做。当我在Chrome中浏览它时,我可以看到它实际上正在将选项卡更改为指定的选项卡,但随后又将其切换回原始选项卡。任何帮助都会很好。代码如下: 选项卡控件: { xtype:'tabpanel', itemId:'tabctr1', width:785

我有一个选项卡面板,您可以单击按钮创建新选项卡。当按钮被单击时,它会创建新的选项卡NotIssue,但当我调用setActiveTab时,它似乎什么也不做。当我在Chrome中浏览它时,我可以看到它实际上正在将选项卡更改为指定的选项卡,但随后又将其切换回原始选项卡。任何帮助都会很好。代码如下:

选项卡控件:

{
                xtype:'tabpanel',
                itemId:'tabctr1',
                width:785,
                hidden:true,
                items:[
                    { iconCls: 'btn-NewTab', tabConfig: { listeners: { click: btnAddSensor_Click } } }
                ]
            }
单击事件:

function btnAddSensor_Click(sender,e,eOpts)
{
//Local Variable Declaration
var parent = sender.up('tabpanel');

if (parent !== null && parent !== undefined)
{
    var newTab = parent.add({
        title: parent.items.length,
        layout: 'vbox', 
        width:785, 
        margin:'5 0 0 0',
        items:[

                ]
            }
        ]
    });

    parent.setActiveTab(newTab);
}
}

这是一个时间问题,我可以通过以下方式解决:

Ext.Function.defer(function(p){ p.setActiveTab((parent.items.getCount()-1)); }, 1000, this, [parent]);

问题是你的第一个标签本质上是一个按钮。。。我不太清楚为什么会有这样的问题,但如果你把它设置为一个按钮,它就会起作用。看看我的眼睛。以及相应的代码:

var parent = Ext.create('Ext.tab.Panel', {
  width: 785,
  height: 400,
  buttons: [{
    text: 'Add Tab',
    listeners: {
      click: btnAddSensor_Click
    }
  }]
});
function btnAddSensor_Click(sender,e,eOpts) {            
  if (parent !== null && parent !== undefined) {
    var newTab = parent.add({
      title: parent.items.length,
      layout: 'vbox',
      margin:'5 0 0 0',
      items: [{
        xtype: 'button',
        text: 'hello ' + parent.items.length
      }]
    });

    parent.setActiveTab(newTab);
  }
}
我想我刚刚意识到为什么会有这个问题。。。当您单击选项卡以添加新选项卡时,Ext希望确保已设置单击的选项卡,因此它将触发
setActiveTab
,但您也在单击函数中调用
setActiveTab
,因此它实际上被触发了两次。。。这意味着你的编程方式是先被调用的,所以它会失败