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.
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% 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:
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.
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.
Tags und Links angularjs angularjs-scope