Хорошо. Возможно, вы можете использовать что-то вроде этого
// Контроллер навигации
Ext.define('App.controller.Navigation', {
extend: 'Ext.app.Controller',
models: [],
stores: [],
views: ['navigation.TabHost'],
init: function() {
this.control({
'tabhost': {
'render': function(tabHost) {
// Grid panels are panels too. So It does not make any sense to use additional container.
tabHost.add(Ext.create('App.view.users.List'));
tabHost.add(Ext.create('App.view.activitylogs.List'));
}
}
}
});
// Пользовательский контроллер
Ext.define('App.controller.Users', {
extend: 'Ext.app.Controller',
models: [],
stores: [],
views: ['users.List'],
init: function() {
this.control({
'userslist': {
'render': function(gridPanel) {
console.info('Im here');
}
}
}
});
// контроллер ActivityLog
Ext.define('App.controller.ActivityLog', {
extend: 'Ext.app.Controller',
models: [],
stores: [],
views: ['activitylogs.List'],
init: function() {
this.control({
'loglist': {
'render': function(gridPanel) {
console.info('Im here');
}
}
}
});
// Также у вас должны быть файлы в виде дерева
// navigation.TabHost
Ext.define('App.view.navigation.TabHost', {
extend: 'Ext.tab.Panel',
alias: 'widget.tabhost',
initComponent: function() {
// ......
}
});
// users.List
Ext.define('App.view.users.List', {
extend: 'Ext.grid.Panel',
alias: 'widget.userslist',
initComponent: function() {
// ......
}
});
// activitylog.List
Ext.define('App.view.activitylogs.List', {
extend: 'Ext.grid.Panel',
alias: 'widget.logslist',
initComponent: function() {
// ......
}
});
Контроллер навигации создаст виджеты и вставит их в свой хост.
Но ActivityLog и Users Controllers будут манипулировать своими представлениями.