Правда ли, что в AngularJS, когда я транслирую на все контроллеры во время инициализации контроллера, я должен установить Timeout для широковещательной передачи?
Другими словами, правда ли, что я должен ждать следующего цикла событий для трансляции, используя $rootScope.broadcast()
, так что другие контроллеры используют $rootScope.on()
можно забрать транслируемое событие?
Это не обычный процесс приложения, но, скажем, если у нас есть демонстрационный режим в приложении, который бы зашунтировал некоторую логику, и не нуждался бы в том, чтобы пойти на сервер, чтобы получить что-то, но мог бы предоставить демонстрационные данные, используя broadcast()
Это правда, что мы должны использовать
setTimeout(function() {
$rootScope.broadcast(...);
}, 0);
чтобы другие контролеры его подхватили?
Причина в том, что другие контроллеры могут еще не существовать. Если модуль приложения определяет 5 контроллеров или использует внедрение зависимости для объявления, это зависит от 2 наборов контроллеров, abc.xyz.controllers
а также abc.efg.controllers
,
Поскольку определение контроллера
.controller("name", function(...) {
})
таким образом, предоставляя функцию, вы не знаете, когда вызывается функция (для создания контроллера), но при условии, что все создания были выполнены в первом цикле событий, тогда, если вы будете ждать один цикл для широковещательной передачи, то вы можете быть уверены, что все контроллеры подберут трансляцию? Это также официально задокументировано?