Angular.js, как передать данные из одного контроллера в другой?
По умолчанию объекты из родительской области видимости доступны в дочерней. Так что даже обмениваться данными не нужно: вложенный контроллер просто видит данные всех вышестоящих контроллеров.
В тех редких случаях, когда нужно обмениваться данными с контроллерами вне иерархии пишется служба. Но эта служба содержит содержательные методы, а не методы типа "положить данные" или "забрать данные".
Как пример: служба вывода уведомлений на экран. Содержит методы для вывода уведомлений, которые взаимодействуют с контроллером, отображающим эти самые уведомления (в виде всплывающих окон в правом верхнем углу экрана, например). Клиенты этой службы, разумеется, ничего не знают о контроллере уведомлений. Им это просто не нужно.
Лично я использую $rootScope.
Мне не понятно, зачем такие сложности с событиями?