Предположим, у меня есть две страницы, страница A и страница B, которые имеют контроллер A и контроллер B соответственно. Я иду на страницу А первый, и сделать операцию, которая будет вызывать $ вещать, чтобы отправить один объект:
$rootScope.$broadcast('payData', obj)
Я хочу получить эту передачу в контроллере B. Но так как я не пошел на страницу B, конструктор контроллера B не инициализируется. Поскольку я пытаюсь получить это сообщение в конструкторе контроллера B, он никогда не получает сообщение.
export default class ControllerB{
constructor($scope, $rootScope){
this.scope = $scope;
this.rootScope = $rootScope
$rootScope.$on('payData', (event, obj) => {
console.log('broadcastPayData receive obj:', obj);
})
}
//some other cool staff
}
Любая идея, как решить эту проблему? Благодарю.
Вы должны хранить 'payData' в службе. Использование событий не будет работать, если контроллеры не будут активны одновременно (и в любом случае они вообще очень хрупкие). –
@JoeClay, умный, хорошая идея! спасибо –