2011-09-01 53 views
1

我與ExtJS的4.0(分機設計師1.2.0)工作。 我有與包含一個按鈕(添加標籤BTN)和一個標籤面板卡布局的面板。每個選項卡包含一個帶有按鈕的獨立工具欄如果關閉,添加選項卡btn將添加Tab2。ExtJS的4設計1.2 Tab平板

我發現,當我運行應用程序,可以執行2日選項卡的按鈕事件,但如果我關閉了第二個選項卡,並從加標籤BTN動態地添加它,不會被執行的事件。

有什麼建議?

以下是我的代碼:(MyPanel.js)

Ext.define('MyApp.view.MyPanel', { 
    extend: 'MyApp.view.ui.MyPanel', 

    initComponent: function() { 
     var me = this; 
     me.callParent(arguments); 

    me.down('button[id=addTab]').on('click',me.onAddTabClick,me); 
    me.down('button[text=Second Button]').on('click',me.onSecondBtnClick,me); 
    }, 

    onSecondBtnClick: function(){ 
     alert("Second Btn"); 
    }, 

    onAddTabClick: function(){ 

     var myTab = this.down('#myTabPanel').child('#tab2'); 
     if (myTab) { 
      myTab.show(); 
     } else { 
      this.down('#myTabPanel').add({ 
        title : 'Tab2', 
        activeTab: 0, 
        closable : true , 
        id: 'tab2', 
        items: [{ 
         xtype: 'panel', 
         id: 'tab2', 
         closable: true, 
         title: 'Tab 2', 
         dockedItems: [ 
          { 
           xtype: 'toolbar', 
           height: 29, 
           id: 'Tab2Toolbar', 
           dock: 'top', 
           items: [ 
            { 
             xtype: 'button', 
             text: 'Second Button' 
            } 
           ] 
          } 
         ] 
        }] 
       }).show(); 
     } 
    } 
}); 

回答

0

我猜想那是因爲你使用initComponent,而不是init,只得到一次應用的情況下,當第一次加載MyPanel。如果您使用init配置相反,我認爲它正確地應用於您的活動按鈕是否已被或不被破壞。

總之,嘗試刪除您initComponent塊,並用此代替它,因爲INIT是「正確」的ExtJS的設立活動4路:

init: function(){ 
    this.control({ 
    'button[id=addTab]': { 
     click: this.onAddTabClick 
    }, 
    'button[text=Second Button]':{ 
     click : this.onSecondBtnClick 
    } 
    }); 
} 

(此代碼是從控制器,沒有特別面板,因此,雖然我希望它的工作原理向右走,記住,它可能需要做一些修改。不要忘記你的逗號!)