У меня есть сценарий, в котором я хочу отправить широковещательное событие в одном контроллере и получить контроллер для директивы, чтобы получить сообщение. Событие отправляется немедленно при запуске контроллера, и проблема в том, что, поскольку директива загружает представление с помощью templateUrl, это происходит асинхронно, поэтому событие транслируется до того, как контроллер инициализации будет проинсталлирован. Эта проблема не возникает, если представление находится в теле главной страницы, но я думаю, что все еще может быть проблема с порядком инициализации контроллера.директивы angularjs с использованием templateUrl - последовательность инициализации
Я использую следующий код в моем главном контроллере:
$rootScope.$broadcast("event:myevent");
Я воспроизвел этот вопрос здесь: http://jsfiddle.net/jugglingcats/7Wf8N.
В консоли Javascript вы можете увидеть, что главный контроллер инициализирован перед контроллером для директивы, и он никогда не видит события.
Итак, мой вопрос заключается в том, есть ли способ подождать, пока все контроллеры не будут инициализированы до трансляции события?
Большое спасибо
Есть ли какая-то конкретная причина, по которой вы используете событие, а не прикрепляете что-то к области? – mortalapeman
Не совсем, но я думал об использовании сервиса, как говорят некоторые люди, или даже о масштабах, но не мог сразу подумать, как это поможет в инициализации в моем случае. Я принял ответ кю, так как это сработало для меня ... – jugglingcats