2011-08-04 19 views
1

我正在開發一個應用程序與extjs4和c#,它是基於browser-layout example。 我在左側有一個菜單,您可以點擊該菜單中的每個項目。在右側,我有我的所有標籤。聽衆在選項卡上點擊或激活無法正常工作/ extjs4

我在選項卡上使用的事件監聽器在我點擊該選項卡時工作,但不起作用我第一次在左側菜單中點擊它。

爲了清楚起見,當我第一次加載我的應用程序時,我必須從左側菜單中選擇一個項目,然後顯示我的選項卡並激活tab1。一切運作良好,除非我選擇另一個項目然後返回到我的選項卡不起作用。

這是我的聽衆:

listeners: { activate: function() {         
           alert('tab1');         
          } 
      }, 

這裏是點擊菜單時調用的代碼:提前

menuPanel.getSelectionModel().on('select', function (selModel, record) { 
    if (record.get('leaf')) { 
     Ext.getCmp('content-panel').layout.setActiveItem(record.getId() + '-panel'); 
     Ext.getCmp('cardTabs').setActiveTab(0); 
}} 

謝謝!

回答

1

解決

我添加了一個偵聽器,以我的一個tabpanel

listeners: { tabchange: function() { 
        //refresh 
        switch (this.getActiveTab().id) { 
         case 'myId1': myFunction(); 
         ......... 
         } 
       }, 
1

最好使用beforetabchange代替activate listener.Try下列操作之一:

listeners : { 
beforetabchange : function(tab, newTab, currentTab){ 
if(newTab != null){ 
if(newTab.getId()=='tab1'){ 
alert('tab1'); 
} 
} 
} 
} 

和上面一樣,你可以寫爲每個要執行標籤塔聽衆。

+0

它不工作:(我沒有得到任何警告消息在任何地方,即使我嘗試了沒有if條件,甚至與tabpanel id或標籤ID! – Armance

2

檢查一次以下網址:

http://jsfiddle.net/6NK7n/6/

var sample1 = { 
    id : 'example1', 
    border : false, 
    title : 'sample1' 
}; 
var sample2 = { 
    id : 'example2', 
    border : false, 
    title : 'sample2' 
}; 
Ext.create('Ext.tab.Panel',{ 
    title : 'example', 
    width : 300, 
    height : 300, 
    draggable : false, 
    plain : true, 
    id : 'examplepanel', 
    activeTab : 0, 
    border : true, 
    renderTo : document.body, 
    items : [sample1,sample2], 
    listeners : { 
     beforetabchange : function(tab,newTab,currentTab){ 
      if(newTab.getId() == 'example1'){ 
       alert('sample1 tab is selected'); 
      }else if(newTab.getId() == 'example2'){ 
       alert('sample2 tab is selected'); 
      } 
     } 
    } 
}); 
+1

確定感謝它現在的工作,但與激活相同的方式,我仍然沒有得到警報,當我點擊左側菜單上沒有選項卡:(任何想法呢? – Armance

+0

一旦分享代碼,我們可以檢查。 – Unknown

+0

其[瀏覽器佈局示例](http://dev.sencha.com/deploy/ext-4.0.2a/examples/layout-browser/layout-browser.html)唯一修改的代碼是被調用菜單單擊我已經在我的問題中分享了它。 js for [主要腳本](http://dev.sencha.com/deploy/ext-4.0.2a/examples/layout-browser/layouts/basic.js),[佈局腳本](http://dev.sencha .com/deploy/ext-4.0.2a/examples/layout-browser/layout-browser.js)。讓我知道你是否需要別的東西。 (我不知道如何分享我的代碼) – Armance