Использование централизованного менеджера событий - довольно распространенный и довольно масштабируемый подход. По вашему вопросу трудно сказать, какие проблемы, если они есть, возникают у вас с моделью событий. Типичная вещь выглядит следующим образом (с помощью издателя):
Файл 1:
require(['publisher','module1'],function(Publisher,Module1) {
var module = new Module1();
Publisher.subscribe('globaleventname', module.handleGlobalEvent, module);
});
Файл 2:
require(['publisher','module2'],function(Publisher,Module2) {
var module = new Module2();
module.someMethod = function() {
// method code
// when method needs module1 to run its handler
Publisher.publish('globaleventname', 'arguments', 'to', 'eventhandlers');
};
});
Основным преимуществом здесь является слабая связь; вместо того, чтобы объекты знали методы других объектов, объекты могут вызывать события, а другие объекты знают, как обрабатывать это конкретное состояние приложения. Если объект, который обрабатывает событие, не существует, ошибка не выдается.
Какие у вас проблемы с этим подходом?