angularJS $ Broadcast und $ on

8

Gibt es eine Möglichkeit, $ $ während der Initialisierungsphase $ $ broadcast zur Weiterleitung der Variablen an $ on zu machen?

%Vor%

%Vor%

Beispiel Geige: Ссылка

Der Bereich zeigt den Wert an, wenn sich die Eingabe ändert, was auf die ng-change-Funktion zurückzuführen ist.

In der Initialisierungsphase wurde der Wert "haha" jedoch nicht an den $ scope.testContent weitergegeben und somit wurde zur ersten Laufzeit nichts angezeigt. Gibt es eine Möglichkeit, den Wert "haha" zur ersten Laufzeit erscheinen zu lassen?

Danke.

    
jiaming 05.06.2013, 07:36
quelle

3 Antworten

1

Geben Sie nur eine kleine Verzögerung mit $timeout function. Aktualisieren Sie einfach den Code in der Fabrik, es wird anfangen zu arbeiten.

Bitte beachten Sie den folgenden Code für die Fabrik:

%Vor%     
Ankur Rathi 24.07.2017 14:11
quelle
0

Der Grund dafür ist, dass ng-change bei nachfolgenden Änderungen des Modells, das durch testContent2 identifiziert wurde, ausgelöst wird. Wenn der Controller initialisiert wird, wird ihm der Wert "test" zugewiesen. ng-change behält dann die Verfolgung nachfolgender Änderungen bei - die anfängliche Zuweisung ist dafür nicht geeignet, nur nachfolgende Änderungen tun dies.

Ссылка - Ich habe die von dir zur Verfügung gestellte Geige aktualisiert. Hier sehen Sie, dass das span -Tag korrekt mit den Daten gefüllt ist.

Was Sie tun mussten, war, anstatt ng-change zu verwenden, sollten Sie die $watch -Funktionalität des Bereichs verwenden. Entfernen Sie also die ng-change -Direktive aus dem Eingabefeld und entfernen Sie die updateContent -Methode. Ersetzen Sie es stattdessen durch den folgenden Code, in dem Sie die Änderungen am testContent2 -Modell beobachten:

%Vor%

Sie können jetzt sehen, dass das Wort "test" (ich konnte nichts finden mit "haha") erscheint, sobald die Seite geladen wird. Nachfolgende Änderungen an der Eingabe werden ebenfalls in span aktualisiert. Hoffe, das ist, was Sie gesucht haben.

    
callmekatootie 05.06.2013 09:27
quelle
0

Die Tatsache, dass Sie nicht berücksichtigen, dass die Phase run der App ausgeführt wird, bevor die Controller initialisiert werden. Da gesendete Nachrichten nicht gepuffert werden und nur an die Listener gesendet werden, die in dem Moment, in dem die Nachricht erstellt wird, zuhören, geht der haha -Wert verloren.

In Ihrem Fall ist es jedoch ziemlich einfach, es mit einer kleinen Änderung in Ihrem Controller arbeiten zu lassen:

%Vor%

Ich habe hier Ihren JSFiddle gegabelt Ссылка , wo Sie auf der Konsole sehen können, wann jede Funktion (run und Controller) ausgeführt wird.

    
Gonzalo Ruiz de Villa 08.07.2015 11:50
quelle

Tags und Links