ExtJS选项卡面板SetActiveTab正在还原回0
我有一个选项卡面板,您可以单击按钮创建新选项卡。当按钮被单击时,它会创建新的选项卡NotIssue,但当我调用setActiveTab时,它似乎什么也不做。当我在Chrome中浏览它时,我可以看到它实际上正在将选项卡更改为指定的选项卡,但随后又将其切换回原始选项卡。任何帮助都会很好。代码如下: 选项卡控件:ExtJS选项卡面板SetActiveTab正在还原回0,extjs,extjs-mvc,Extjs,Extjs Mvc,我有一个选项卡面板,您可以单击按钮创建新选项卡。当按钮被单击时,它会创建新的选项卡NotIssue,但当我调用setActiveTab时,它似乎什么也不做。当我在Chrome中浏览它时,我可以看到它实际上正在将选项卡更改为指定的选项卡,但随后又将其切换回原始选项卡。任何帮助都会很好。代码如下: 选项卡控件: { xtype:'tabpanel', itemId:'tabctr1', width:785
{
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
,因此它实际上被触发了两次。。。这意味着你的编程方式是先被调用的,所以它会失败