Панель вкладок Extjs 4 Designer 1.2 - PullRequest
       25

Панель вкладок Extjs 4 Designer 1.2

1 голос
/ 01 сентября 2011

Я работаю с ExtJs 4.0 (Ext Designer 1.2.0).У меня есть панель с макетом карты, которая содержит кнопку (добавить вкладку BTN) и панель вкладок.Каждая вкладка содержит отдельную панель инструментов с кнопкой.Добавить вкладку btn добавит Tab2, если она закрыта.

Я заметил, что когда я запускаю приложение, событие на кнопке 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();
        }
    }   
});

1 Ответ

0 голосов
/ 13 января 2012

Я предполагаю, что поскольку вы используете initComponent вместо init, событие применяется только один раз, когда MyPanel загружается впервые.Если вы вместо этого используете конфигурацию init, я считаю, что она правильно применяет ваши события независимо от того, была ли кнопка уже уничтожена или нет.

Короче, попробуйте удалить блок initComponent и заменить его следующим, поскольку init is«правильный» ExtJS 4 способ настройки событий:

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

(Этот код взят из контроллера, а не из панели, поэтому, хотя я надеюсь, что он работает сразу, имейте в виду, что он может потребоватьнекоторые изменения. Не забывайте запятую!)

...