2017-06-09 72 views
1

我做了一个fiddle这表明这些问题。第一个问题是无法关闭TabBar中的可关闭选项卡。该代码是简单的:无法关闭关闭的选项卡和激活标签

Ext.create("Ext.tab.Bar",{ 
    renderTo: "one", 
    items:[{"text":"One","closable":true},{"text":"Two","closable":true}] 
}); 

文档中说,该

关闭的:布尔绑定

真正使标签可关闭和显示的关闭图标

所以,这个属性不仅关于这个关闭图标,而且关于这个行为被关闭。

第二个问题,我面对的是,它是不可能通过激活一个的TabBar添加到一个tabpanel标签。代码也很简单:

Ext.create("Ext.tab.Panel",{ 
    renderTo: "two", 
    id: "test2", 
    items:[{"title":"One","closable":true},{"title":"Two","closable":true}], 
    listeners: { 
     render: function() { 
      this.getTabBar().add({"text":"Three"}); 
     } 
    } 
}); 

只要尝试激活这最后一个选项卡,您将失败。如果您在此标签上设置了active媒体资源,那么您将无法停用此标签。那么,我们如何解决这一切?

回答

2

TabBar由Ext.tab.Panel内部使用,通常不需要手动创建 。

使用TabBar的实现依赖于一个事实,即它是一个tabpanel的一部分。如果我们在它的源挖,我们会看到,在它检查“closeTab”方法的实现,如果有一个潜在的卡收:

if (tabPanel && card) {... 

相关的第二行为,如果你检查出的“doActivateTab “方法的实现,还使用TabBar源代码,这是你会看到:

doActivateTab: function(tab) { 
    var tabPanel = this.tabPanel; 

    if (tabPanel) { 
     // TabPanel will call setActiveTab of the TabBar 
     if (!tab.disabled) { 
      tabPanel.setActiveTab(tab.card); 
     } 
    } else { 
     this.setActiveTab(tab); 
    } 
} 

因此,如果没有一个tabpanel,它只会激活选项卡,如果有,它会调用一个tabpanel的” setActiveTab “,如果它没有找到附加到待激活标签的卡片,则激活先前的标签。

你不应该直接添加的TabBar,而不是添加到一个tabpanel:

this.add({"title":"Three"}); 
0

这里的工作fiddle。看起来像setactivetab需要在渲染后。