Ich bin ziemlich neu in Javascript-Programmierung und ich habe nur AngularJS berührt. Um es auszuwerten, entschied ich mich, eine einfache Notizanwendung zu schreiben. Das Modell ist wirklich einfach, eine Liste von Notizen, in denen jede Notiz ein Label, einen Text und eine Liste von Tags hat. Allerdings habe ich Probleme beim Übertragen von Daten zwischen isolierten Bereichen verschachtelter Direktiven.Calling Reihenfolge der Link-Funktion in verschachtelten und wiederholten angularjs Anweisungen
Ich habe drei Direktiven, Notizen, Notizen und Tagger (neue Elemente mit den gleichen Namen definieren). Jeder von ihnen verwendet einen isolierten Bereich.
Die Notes-Direktive verwendet ng-repeat, um jede ihrer Noten mit dem Notenelement zu "rendern".
Die Note-Direktive verwendet das Tagger-Element, um die Liste der Tags zu "rendern".
Die Notiz Direktive definiert den Geltungsbereich: {getNote: "&", ...}, um eine Noteninstanz aus der Liste der Noten an die Notensteuerung/Direktive zu übergeben. Die getNote (index) -Funktion wird in der Link-Funktion der Noten-Anweisung aufgerufen. Das funktioniert gut!
Die Tagger-Direktive definiert den Geltungsbereich: {getTags: "&", ...}, um eine Liste von Tags für eine bestimmte Notiz an den Tagger-Controller/Direktive zu übergeben. Die getTags-Funktion wird in der Link-Funktion der Tagger-Direktive aufgerufen. Das funktioniert nicht!
Wie ich es verstehe, ist das Problem, dass die Link-Funktionen der Direktiven in einer inkonsistenten Reihenfolge aufgerufen werden. Debuggen der Anwendung zeigt, dass die Verbindung funktioniert in der folgenden Reihenfolge aufgerufen werden:
Link-Funktion in den Anmerkungen Richtlinie (Hinzufügen der GetNote Funktion auf den Umfang Anmerkungen)
Link-Funktion in der Tagger Richtlinie von der ersten Note Funktion
Link-Funktion in der ersten Note Richtlinie (Addition den getTags auf den Umfang) (Aufruf GetNote (getTags in dem übergeordneten Notiz Umfang Aufruf) in dem übergeordneten Notizen scope)
Link-Funktion in der Tagger Richtlinie des zweiten Note (Aufruf getTags in dem übergeordneten Anmerkung scope) Funktion
Link-Funktion in der zweiten Note Richtlinie (Addition des getTags zu der Umfang) (GetNote in den übergeordneten Aufruf merkt Umfang)
Dies wird da in # 2 der Umfang der ersten Note eine getTags Funktion noch nicht nicht funktioniert hat.
Ein einfaches Beispiel kann in Plunker gefunden werden.
Meine Frage läuft daher auf: Was bestimmt die Reihenfolge, in der Link-Funktionen in verschachtelten Direktiven aufgerufen werden.
(Ich löste das Problem mit $ watch auf getTags in der Tagger-Direktive ...)
Bezug
[Praktische Anleitung zu PreLink, PostLink und Controller Methoden der Winkelrichtlinien] (http://www.undefinednull.com/2014/07/07/practical-guide-to-prelink-postlink-and-controller-methods -of-angular-directives /) ist ein ziemlich umfassender Artikel, wie man pre-link/post-link auf den verschachtelten Direktiven verwendet –