2012-04-27 3 views
3
var tabPanel = Ext.getCmp('tabPanel'); 
for(var i=1; i<tabPanel.items.length; i++) 
{ 
    tabPanel.items.removeAt(i); 
    i--; 
} 
tabPanel.doLayout(); 

tabPanel에서 모든 탭 (첫 번째 탭 제외)을 제거하려고합니다. 이 코드는 그렇게하고 있습니다. 나는 방화범을 사용하여 그것을 검사했다.
하지만 여전히 UI에는 반영되지 않습니다. doLayout() 충분하지 않습니까? 대신 당신이 탭tabPanel에서 탭 제거

에게 그것을 할 수있는 또 다른 방법을 제거하는 대신 혼합 수집 용기를 이야기하고 그런 다음 전화

tabPanel.remove(tabPanel.items.getAt(i)); 

tabPanel.items.removeAt(i); 

를 호출

답변

4

입니다
tabPanel.removeChildEls(function(tab){ 
    return tab != tabPanel.items.first(); 
}); 
+0

고맙습니다 ...하지만 위의 코드가 작동하지 않는 이유를 말해 줄 수 있습니까? – Shashwat

+0

답변에 대한 내 의견은 그것을 설명합니다. 'tabPanel.items.removeAt (i)'는'MixedCollection' 항목에서 그것을 제거하지만 탭이 제거되었다는 것을'tabPanel'에 통지하지 않습니다. 항목 모음은 읽기 전용으로 액세스해야합니다. 'Container'에서 상속받은)'TabPanel' 메소드를 사용하여 하위 컴포넌트 (탭)를 추가/제거합니다. –

+0

알았습니다. 그러나 일반 패널에서 항목을 추가 및 제거하는 동안 작동합니다. 제거 기능이 자동으로 패널에 알리고 레이아웃을 수행합니다. 그렇다면 왜 탭 패널에 없습니까? – Shashwat

0

마우스 가운데 버튼을 클릭하여 탭을 닫습니다.

var middleClick = $(document).mousedown(function(e) { 
    if(e.which == 2){ 
       var tabPanel = <%= tabPanel.ClientID %>;  
       var activeTab = tabPanel.getActiveTab(); 
       if (e.target.textContent == activeTab.title) { 
        var activeTabIndex = tabPanel.items.findIndex('id', activeTab.id); 
        tabPanel.remove(activeTabIndex); 
       } 
      } 
      return true; 
    }); 

희망 하시겠습니까? =)

관련 문제