2013-03-01 58 views
2

我在我的視圖中帶有Tabs的TabPanel。我怎樣才能得到這個面板中的一個選項卡的實例,哪些屬性應該設置id或itemId?通過id或itemId獲取TabPanel的Tab

感謝

openProjectMetaTab: function(project) { 
    var tabPanel = this.getTab(); 
    console.log(tabPanel); 
    var mpItemId = 'project-metaTab-' + project.get('id') 
    console.log('#'+mpItemId); 
    var metaPanel = tabPanel.getComponent(mpItemId); 
    console.log(metaPanel); 
    if(!metaPanel) { 
     tabPanel.add({ 
      title: project.get('title'), 
      closable: true, 
      items: [ 
       { 
        xtype: 'projectMetaForm', 
        itemId: mpItemId, 
       }, 
      ], 
     }).show(); 
    } 
} 
+0

你能提供你如何定義你的標籤一些代碼?只有在開發時或者在應用程序中有組件時,纔會使用「Id」,只知道它創建的** 1 **實例。 – A1rPun 2013-03-01 13:52:06

回答

2

我會建議使用itemId,因爲這樣你就不必擔心全球id屬性的衝突。每文檔:

「自的itemId的是一個指數,容器內部的MixedCollection,條目標識的局部範圍到容器」

然後可以使用Ext.container.Container.getComponent讓你的標籤。

這裏是從海報的例子更新的問題:

openProjectMetaTab: function(project) { 
    var tabPanel = this.getTab(); 
    console.log(tabPanel); 
    var mpItemId = 'project-metaTab-' + project.get('id') 
    console.log('#'+mpItemId); 
    var metaPanel = tabPanel.getComponent(mpItemId); 
    console.log(metaPanel); 
    if(!metaPanel) { 
     tabPanel.add({ 
      title: project.get('title'), 
      closable: true, 
      xtype: 'projectMetaForm', 
      itemId: mpItemId 
     }).show(); 
    } 
} 
+0

謝謝!我已經嘗試過,但它不起作用,我的錯誤是什麼?我已經在上面添加了我的代碼。 – Gerrit 2013-03-01 18:46:54

+0

你給表單的id,而不是實際的標籤面板,它嵌套在下面一層以上。 – Reimius 2013-03-01 19:11:45

+0

如何將ID賦予選項卡面板? – Gerrit 2013-03-01 19:19:21