Jestem dość nowa w programowaniu JavaScript i tylko dotknąłem AngularJS. W celu jej oceny postanowiłem napisać prostą aplikację nutową. Model jest naprawdę prosty, lista notatek, gdzie każda notatka ma etykietę, tekst i listę znaczników. Wystąpił jednak problem polegający na przekazywaniu danych między odizolowanymi zakresami zagnieżdżonych dyrektyw.Kolejność wywoływania funkcji łącza w zagnieżdżonych i powtarzanych dyrektywach angularjs
Mam trzy dyrektywy, notatki, notatkę i tagger (definiowanie nowych elementów o tych samych nazwach). Każdy z nich używa izolowanego zakresu.
Dyrektywa zauważa, że ng-repeat służy do "renderowania" każdej z notatek za pomocą elementu nutowego.
Dyrektywa note używa elementu tagger do "renderowania" listy znaczników.
Dyrektywa nutowa określa zakres: {getNote: "&", ...} w celu przekazania instancji notatki z listy uwag do kontrolera/dyrektywy. Funkcja getNote (index) wywoływana jest w funkcji łącza dyrektywy note. To działa dobrze!
Dyrektywa taggera określa zakres: {getTags: "&", ...} w celu przekazania listy znaczników dla danej nuty do kontrolera/dyrektywy znacznika. Funkcja getTags jest wywoływana w funkcji linkowania dyrektywy tagger. To nie działa!
Jak rozumiem, problemem jest to, że funkcje linkowe dyrektyw są wywoływane w niespójnej kolejności. Debugowania aplikacji pokazuje, że funkcje łącza nazywane są w następującej kolejności:
Link funkcja w notach dyrektywy (dodawanie funkcji getNote zakresu Notes)
funkcji ogniwem w dyrektywie Taggera od pierwszej nuty (wywołanie getTags w zakresie rodzic uwaga) funkcja
funkcję łącza w pierwszej dyrektywy uwaga (dodanie getTags do zakresu) (wywołanie getNote w zakresie noty dominująca)
funkcji ogniwem w dyrektywie Taggera drugiej nocie (wywołanie getTags w zakresie rodzic uwaga funkcja)
łącza funkcję w drugiej dyrektywy uwaga (dodając do getTags do zakres) (wywołanie getNote w dominującej zauważa zakres)
To nie zadziała, ponieważ w # 2 zakres od pierwszej nuty jeszcze nie funkcję getTags.
Uproszczony przykład można znaleźć w Plunker.
W związku z tym moje pytanie sprowadza się do: Co decyduje o kolejności wywoływania funkcji łącza w dyrektywach zagnieżdżonych.
(Rozwiązałem problem za pomocą funkcji $ watch na getTags w dyrektywie tagger ...)
pozdrowienia
[Praktyczny przewodnik po metodach preLink, PostLink i kontrolerach dyrektyw kątowych] (http://www.undefinednull.com/2014/07/07/practical-guide-to-prelink-postlink-and-controller-methods -of-angle-directives /) jest dość obszernym artykułem, jak używać pre-link/post-link w zagnieżdżonych dyrektywach –