слушатель на вкладке или активация не работает должным образом / extjs4 - PullRequest
1 голос
/ 04 августа 2011

Я занимаюсь разработкой приложения с extjs4 и c #, оно основано на примере макета браузера . У меня есть меню на левой стороне, где вы можете нажать на каждый пункт этого меню. На правой стороне у меня есть все мои вкладки.

Прослушиватель событий, который я использую на вкладках, работает, когда я нажимаю на вкладку, но не работает после при первом нажатии на него в левом меню.

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

Заранее спасибо!

Ответы [ 3 ]

2 голосов
/ 08 августа 2011

один раз проверьте следующий URL:

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 голос
/ 06 февраля 2012

Решено

Я добавил слушателя в свою панель вкладок

 listeners: { tabchange: function () {
                    //refresh 
                    switch (this.getActiveTab().id) {
                        case 'myId1': myFunction();
                        .........
                        }
                },
1 голос
/ 05 августа 2011

Лучше использовать beforetabchange вместо activate listener. Попробуйте следующее:

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

Как и выше, вы можете написать слушателей для каждой вкладки, которую вы хотите выполнить.

...