Я пытаюсь создать код, который позволяет мне запускать функцию в контроллере, но только после того, как весь дом настроен и готов (включая функцию ссылки директив и т. д.).Угловая: функция запуска в контроллере при загрузке всех директив
В настоящее время я общаюсь между ctrl/service и директивой через трансляции $ rootScope. Первая трансляция во время загрузки контроллера не подхвачена директивой. Разумеется, причина заключается в том, что контроллер загружается до запуска функции директивной ссылки. Я прочитал несколько похожих вопросов о SO, где люди рекомендовали использовать $ timeout для этих вызовов. Это, к сожалению, не всегда работает, и я не хочу загромождать свои ctrl/services с большим количеством вызовов timeout. Поэтому я ищу другое решение моей проблемы.
модели связи выглядит следующим образом:
1.) Контроллер говорит службе подготовить некоторые данные (с помощью вызова функции в обслуживании)
2.) Служба говорит директивы для отображения данных (через эфир)
3.) отображаются данные Directive ... или не в моем случае :(
EDIT:
Поскольку время имеет важное значение в моем приложении, я в основном ищу способ инициировать функцию в контроллере, как только все угловые компоненты закончат загрузку. Эта функция в контроллере отобразит содержимое, присвоив значение переменной области видимости. В то же время он начнет тратить время. Я могу, конечно, только начать делать это, как только директивы будут загружены, в противном случае tmining будет неправильным, или директива еще не готова отображать содержимое и т. Д.
Я прочитал сообщение в блоге от Ben Nadel, которое в основном показывает как загружаются директивы. Я надеялся настроить внешнюю директиву, которая загружается в последний раз, поэтому я могу запустить завершенную загрузку. К сожалению, это не работает, как только любая из внутренних директив использует templateUrl. http://www.bennadel.com/blog/2603-directive-controller-and-link-timing-in-angularjs.htm
я придумал что-то подобное, но я Мне придется немного перефразировать мой вопрос.Timinig имеет решающее значение в моем приложении, поэтому я должен быть уверен, что все будет готово, прежде чем я запустил первую функцию в своем контроллере. – jimmy
Но я могу использовать подход часов вместо широковещательной передачи, поскольку директива по крайней мере подбирает вызов для отображения чего-то. Единственная проблема в том, что изменение значения в контроллере и обновление в директиве не происходит одновременно (я имею в виду, по крайней мере, сразу после друг друга) – jimmy
Да, потому что все будет асинхронно, вам нужно использовать правильные методы. Мне нужно будет больше узнать о вашей проблеме, чтобы помочь вам в дальнейшем. На этом этапе связь между службой, контроллером и директивой может быть архивирована с диспетчеризацией событий, привязкой данных и, возможно, другим материалом. – wbeange