extjs 4 одинаковых компонента с несколькими вкладками

Я работаю с extjs 4 и rails 3. У меня есть панель инструментов и панель вкладок. Я хочу использовать одну и ту же панель инструментов на всей панели вкладок и хочу, чтобы кнопки на панели инструментов работали в соответствии с активной вкладкой. Например, панель инструментов содержит кнопки добавления, редактирования и т. д. Предположим, у меня есть вкладки регионов и категорий. Когда вкладка региона активна, я должен иметь возможность выполнить операцию «ДОБАВИТЬ» для «Регион» и так далее. Каким может быть правильный способ добиться этого в extjs 4? Я не могу назначить действие на панели инструментов в контроллерах региона и категории? Я сослался на это , но понятия не имею, как я могу реализовать это в своем коде? Вот пример кода контроллера extjs mvc "Regions", который я пробовал. Проблема в том, что если я напишу аналогичный код в контроллере Category для ADD btn commontoolbar, будет вызвана реализация ADD для Region : (

    Ext.define('overdrive.controller.Regions', {
        extend: 'Ext.app.Controller',
        views: [
            'region.RegionList',
            'region.RegionForm',
            'region.RegionPanel',
            'common.CommonToolbar'
        ],
        models: ['Region'],
        stores: ['Regions'],
         init: function() {
            this.control({
                'viewport > panel': {
                    render: this.onPanelRendered
                },
                'regionpanel':{
                    beforerender:this.addToolbar
                } ,
                'commontoolbar button[action=chk]': {
                    click: this.chk
                }

            });
        },
        chk:function()
        {

            var tabcon = Ext.getCmp('tabcon');//tabcon is id of tab panel
             var activetab = tabcon.getActiveTab();

             var activetabid = activetab.getId();
             console.log('Active Tab ID:'+activetabid);
                if(activetabid == 'regiontab'){
                alert('Clicked button in region Tab');
                }else if(activetabid == 'storetab'){
                 alert('Clicked button in store Tab');
                }
        },


       addToolbar:function()
       {

            var regionpanel=Ext.widget('regionpanel');
            var regiontab=Ext.getCmp('regiontab');
            var tabcon = Ext.getCmp('tabcon');


           regiontab.add({
                xtype:'commontoolbar', id:'regiontoolbar',
                itemId: 'regiontoolbar'
           });

        },

       addRegion: function(button) {

            var regiontoolbar=button.up('regiontoolbar');
            var regiontab = Ext.getCmp('regiontab');
            var regionpanel = regiontab.down('regionpanel');
            var regionform = regionpanel.down('regionform');
            regiontoolbar.child('#add').setDisabled(true);
            regiontoolbar.child('#edit').setDisabled(true);
            regiontoolbar.child('#delete').setDisabled(true);
            regiontoolbar.child('#save').setDisabled(false);
            regiontoolbar.child('#cancel').setDisabled(false);
            regionpanel.layout.setActiveItem(regionform);
        }
});

6
задан Community 23 May 2017 в 12:08
поделиться