0

我正在运行 ExtJS 4.1,并在下面定义了一个标签打开器:

var tabs =   (typeof tabs != 'undefined') ? tabs : this.getMainTabs();
tabs = (typeof tabs == 'string') ? Ext.getCmp(tabs) : tabs;
var have_record = (typeof record != 'undefined' && record != '');

var id = have_record ? record.id : 'new';
var tab_id = 'tab-' + xtypeString + '-' + id;
var checkTab=Ext.getCmp(tab_id);

if(checkTab){
    tabs.setActiveTab(checkTab);
} else {
    var default_params = {xtype: xtypeString, closable : true, id : tab_id};
    var override_params = (typeof params != 'undefined') ? params : {};
    params = Ext.merge(default_params, override_params);

    var checkTab = tabs.add(params);
    tabs.setActiveTab(checkTab);
    (have_record) ? checkTab.setRecord(record) : checkTab.setRecord();
}
return checkTab;

所以发生的事情是我们创建了一个初始选项卡 (tab-a),然后我们返回主屏幕创建第二个选项卡 (tab-b)。现在当我去点击tab-a时,什么也没有发生。当我返回主屏幕然后单击 tab-a 时,它会打开 tab-b。

有人对为什么会发生这种情况有想法吗?(如果您需要更多数据,请告诉我......虽然我在下面所做的事情似乎很不言自明,但这可能是因为我一直在盯着这个)

这是我们正在创建的带有 xtype 的选项卡

{
   xtype: 'tabpanel',
   region: 'center',
   id: 'searchtabs',
   itemId: 'searchtabs',
   listeners: {
       tabchange: {
           fn: me.onSearchtabsTabChange,
           scope: me
       }
    }
 }
4

1 回答 1

0

您的 xtype 定义可能有问题,您是在设置id还是itemId

另请注意,使用相同的组件创建多个组件id可能会在以后导致许多麻烦。如果您要创建一个组件的多个实例,请确保id在创建时指定不同的实例——不要在 xtype 定义中指定一个。

于 2012-12-29T15:13:21.883 回答