Я предлагаю сделать ваши контроллеры осведомленными.Когда контроллер получает событие диспетчеризации, у вас должно быть что-то похожее на следующее:
this.controllerViewOne = this.controllerViewOne
|| this.render({
xtype: 'panel',
listeners: {
onMajorUIAction : function(params){
Ext.Dispatch({
controller : 'ProperController',
action : 'ProperAction',
historyUrl : 'ProperHistoryUrl',
params : params
});
}
}
});
Это дает дополнительное преимущество, заключающееся в том, что все прослушиватели "Main" для каждого из представлений контроллеров находятся в одном пространстве.Это также означает, что повторное использование представлений для других контроллеров становится проще.
Все ваши представления должны иметь слушателей, которые помогают абстрагироваться от сложностей отдельных компонентов и их событий / слушателей.
Я использую менеджер пользовательского интерфейсадля глобальных изменений пользовательского интерфейса, таких как скрытие / отображение главной панели инструментов или отображение кнопки «Назад».