Я работаю с 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);
}
});