У меня есть директива, которая управляет Dom в функции ссылки. Внутри него еще одна директива о том, что мне нужна его функция связи, которая запускается после того, как родительская директива закончила манипуляцию с Dom. Например, я назначил свойства области действия родительской ссылки, но в дочерней директиве область не имеет этих свойств (области не изолированы, и мне нужно изменить область в функции ссылки, чтобы я мог получить доступ к элементу)Директива внутри функции директивной ссылки sync
ответ
Для директив порядок выполнения функции link
(то же, что и post-link
) отменен. Это означает, что для следующего сценария:
<span l1-dir><span l2-dir></span></span>
Вызывается функция связи дочерней директивы, а затем вызывается ссылка на родительскую директиву. Нам повезло, потому что у нас также есть функции pre-link
, которые вызывается в порядке определения директивы.
В нашем случае вызывается функция первой директивы pre-link
, а затем функция pre-link
второй.
Вы можете переместить логику манипулирования DOM из родительской директивы в функции pre-link
(первый разделить на pre
и post
):
return {
restrict: 'A',
compile: function compile(tElement, tAttrs, transclude) {
return {
pre: function preLink(scope, iElement, iAttrs, controller) { //parent directive logic for DOM manipulation
},
post: //nothing
}
}
Это гарантирует, что в post-link
части ребенка директивы вашей манипуляции DOM от родительского директива будет полной.
Просто добавьте нг-если к вашей директиве ребенка и установить его на истинный после завершения в $ таймаута в 0 в вашей директиве «родительским», как это:
/*above should be placed all your parent directive link function code... the $timeout should be
executed after your parent directive code*/
$timeout(function(){
showChildDirective = "true";
}, 0);
Таким образом, вы выполним всю вашу задачу с вашей родительской директивой ($ timeout будет помещен в нижней части функции ссылки), и вы сможете дождаться завершения следующего цикла $ digest, , поэтому все ваши привязки к DOM будут быть comp Lete.
- 1. Тестирование $ resource.get params внутри функции директивной ссылки
- 2. Директива для директивной коммуникации?
- 3. Уставка углового набора в функции директивной ссылки
- 4. Нужно назначить функцию внутри Угловой директивной ссылки?
- 5. Функция директивной ссылки не называется
- 6. Как передать $ q функции угловой директивной ссылки?
- 7. Доступ к родительскому объекту ngModel внутри директивной ссылки
- 8. В функции transclude функции директивной ссылки, как используется «futureParentElement»?
- 9. Позвонить $ http.get из директивной ссылки
- 10. Угловая директива для директивной связи для таймера
- 11. Функция директивной ссылки Angularjs (Typcript) не срабатывает
- 12. Нужна помощь в понимании, почему создание ссылки на $ scope в функции функции директивной ссылки
- 13. Как выполнить модульное измерение Угловой маршрутChangeSuccess в функции директивной ссылки?
- 14. AngularJS: Пользовательская функция директивной ссылки не регистрируется
- 15. Изменить класс элемента в функции директивной ссылки angularjs
- 16. AngularJS Передача значения от функции директивной ссылки к контроллеру
- 17. Невозможно получить доступ к области контроллеров из функции директивной ссылки
- 18. Как насчет $ get.Constructor {} в функции директивной ссылки AngularJS 1.3?
- 19. Вложенная функция директивной ссылки не вызывается, контроллер не подтвержден
- 20. Создайте нового пользователя внутри sync-функции couchbase-sync-gateway?
- 21. Не удается получить доступ к инъецированным службам внутри функции директивной ссылки
- 22. Как получить текущий контроллер $ scope внутри директивной функции в angularjs?
- 23. Функция директивной ссылки AngularJS не выполняется
- 24. Функция угловой директивной ссылки, называемая дважды
- 25. Функция угловой директивной ссылки работает только на странице load/reload
- 26. Вызов директивной функции от дочерней директивы не работает
- 27. Как передать данные из директивной функции в службу?
- 28. директива для директивной связи с использованием широковещательной системы angularjs
- 29. AngularJs с NodeJs не может получить доступ к угловым службам в функции директивной ссылки
- 30. Javascript анонимные функции sync
Это работает для меня. Спасибо. –