2017-06-09 71 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需要在渲染後。