Wie funktioniert AngularJS intern catch-Veranstaltungen wie 'onclick', 'onchange'?
Habe ich "ng-model" im input-element und beobachtet, dass das element mit chrome inspector. Aber jeder onxxx-Eigenschaften(einschließlich onchange) des input-Elements null war. Dann, wie kann AngularJS fangen "onchange" - Ereignis, ausgelöst durch Benutzereingaben?
- Möglicherweise möchten Sie überprüfen, stackoverflow.com/questions/9682092/databinding-in-angularjs
- Danke! Ich habe gerade diesen Artikel Lesen, aber es ist noch nicht klar. Nach diesem Artikel, AngularJS verwendet $apply() und $digest() for dirty-checking. Aber wer macht die Funktionen aufgerufen? Bedeutet 'Winkel' - Modul verwenden, so etwas wie setInterval() zum abrufen?
- Es gibt einige event-Zuschauer, die initiieren
digest
Phasen, Stewie ' s Antwort etwas Ausführlicher. - OK ich habe es. Danke.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn in Chrome die Ereignis-Listener-Registerkarte, die Sie inspizieren ein standard-text-input-element (mit ng-Modell befestigt), werden Sie sehen, dass es zwei Ereignis-Listener angehängt:
$destroy
undinput
.Eckig, standardmäßig überwacht
input
Ereignis, und, falls es nicht vom browser unterstützt, wird es wieder fallen zukeydown
+change
Veranstaltungen.Ereignisse verknüpft mit jQlite die bind-Methode (es sei denn, Sie haben auch eine vollständige jQuery enthalten, in welchem Fall die bind-Methode übernehmen).
Beispiel-input-element, das Sie überprüfen können, Sie sich ist gefunden auf input [E-Mail] Richtlinie-Dokumentation-Seite.
Die genaue Zeile in Eckigen Quelle (v1.2.0rc1) verantwortlich für den Umgang mit den Eingabe-event.
Können Sie Ereignis-Listener zu jedem DOM-Knoten mit :
Knoten.addEventListener(eventName, listenerMethod, useCapture)
Während Sie zugewiesen werden, bevor eine Methode, um Knoten.onchange, mit addEventListener, befestigen Sie einen Ereignis-listener für das Ereignis 'change', oder 'klicken'.
Finden Sie unter : https://developer.mozilla.org/en-US/docs/DOM/EventTarget.addEventListener