ExtJS 4: Запретить изменение вкладки с помощью TabBar - PullRequest
0 голосов
/ 28 марта 2012

Я не использую панель вкладок, просто панель вкладок, и должен препятствовать изменению вкладки по некоторым критериям.

В документах ExtJS я нашел событие change для Ext.tab.Bar, но оно срабатывает, когда вкладкауже изменился.Так что preventDefault() и return false в этом случае не работают.

Во-вторых, я пытался установить свойство Ext.tab.Tab.handler, когда вкладки были инициализированы, но оно срабатывает, когда кнопка вкладки уже нажата.Так что preventDefault() и return false тоже не работают.

Может ли это помочь только телу?Как я могу предотвратить изменение вкладок, используя только Ext.tab.Tab и Ext.tab.Bar?

Thx.

Ответы [ 2 ]

1 голос
/ 28 марта 2012

Я думаю, что вы можете использовать событие beforetabchange на самой панели вкладок.

Из документов Sencha: http://docs.sencha.com/ext-js/4-0/#!/api/Ext.tab.Panel-event-beforetabchange. Верните false в любом слушателе, чтобы отменить вкладку.

Редактировать

Возможно, вы могли бы затем расширить компонент Ext.tab.Bar и зарегистрировать событие beforechange, изменив метод setActiveTab, я думаю, что это довольно простая модификация

setActiveTab: function(tab) {
        //test the beforechange return
        if (tab.disabled && me.fireEvent('beforechange', tab) === false) {
            return;
        }
        var me = this;
        if (me.activeTab) {
            me.previousTab = me.activeTab;
            me.activeTab.deactivate();
        }
        tab.activate();

        if (me.rendered) {
            me.layout.layout();
            tab.el && tab.el.scrollIntoView(me.layout.getRenderTarget());
        }
        me.activeTab = tab;
        me.fireEvent('change', me, tab, tab.card);
    }
0 голосов
/ 10 апреля 2014

Добавьте действие контроллера «beforeshow» на контейнер панели вкладок и отключите слушателей. Позволяет вкладкам вести себя нормально без кликабельности.

component.down("#tabPanel").tabBar.clearListeners();
...