Ich habe "ng-Modell" im Eingabeelement verwendet und dieses Element mit dem Chrom Inspector beobachtet. Aber alle onxxx-Eigenschaften (einschließlich onchange) des Eingabeelements waren null. Wie kann AngularJS dann das "onchange" -Ereignis durch Benutzereingaben erfassen?Wie erfasst AngularJS intern Ereignisse wie 'onclick', 'onchange'?
Antwort
Wenn in Chrome Ereignis-Listener Registerkarte Sie ein Standard-Texteingabeelement überprüfen (mit ng-Modell im Anhang) Sie werden sehen, dass es zwei Event-Listener hat angehängt: $destroy
und input
.
Angular, standardmäßig auf input
Ereignis, und, falls es nicht vom Browser unterstützt wird, fällt es zurück auf keydown
+ change
Ereignisse.
Ereignisse werden mit der Bind-Methode von jQlite verknüpft (es sei denn, Sie haben auch eine vollständige jQuery, in diesem Fall wird die Bind-Methode übernommen).
Beispiel für ein Eingabeelement, das Sie selbst überprüfen können, finden Sie auf der Doku-Dokumentationsseite input [email].
Exact line in Angular source (v1.2.0rc1) verantwortlich für die Behandlung des Eingabeereignisses.
Jetzt ist es völlig klar. Vielen Dank! – firia2000
Warum feuert jquery das Eingabeereignis nicht mit val() !!! ?? Wie sonst würden Sie diese Änderung korrekt propagieren? – tommybananas
@ snowman4415 Gefällt mir: http://stackoverflow.com/a/17110709/1095616 – Stewie
Sie können Ereignis-Listener einem DOM-Knoten mit Hilfe anhängen:
node.addEventListener (eventname, listenerMethod, useCapture)
Während Sie vor einer Methode zugewiesen addEventListener node.onchange, zu verwenden, müssen Sie fügen Sie dem Ereignis 'Ändern' oder 'Klicken' einen Ereignis-Listener hinzu.
See: https://developer.mozilla.org/en-US/docs/DOM/EventTarget.addEventListener
Die Frage ist über angularjs insbesondere, nicht dom Ereignishandler –
Nun, AngularJS ist immer noch Javascript mit dem DOM Recht? So eckig anfügen einige Event-Listener mit dem DOM, ich weiß nicht angular, aber ich nehme an, dass Ereignis an das Dokumentelement angehängt werden und sie Ereignisblubbern verwenden, um zu filtern, welches Ziel das DOM-Ereignis erhalten wird. – KKetch
Auf der Basis, ja muss es. Aber in der Tat funktioniert es nicht so, wie Sie "annehmen". Es verwendet das Dirty-Checking-Modell, um herauszufinden, was sich geändert hat. Sie können mehr darüber lesen inhttp: //stackoverflow.com/questions/9682092/databinding-in-angularjs –
- 1. reagieren deaktivieren alle Ereignisse. Wie man "onClick" & "onChange" Requisiten ignoriert, wenn ich DOM erzeuge
- 2. Wie können wichtige Ereignisse in einem Service erfasst werden?
- 3. onClick Ereignisse document.createElement („th“)
- 4. AngularJS, wählen onChange oder ngChange
- 5. Dynamische Tabellenzeilen mit onClick Ereignisse
- 6. Wie binden Sie benutzerdefinierte Ereignisse in AngularJS?
- 7. Angularjs - ui-calendar: wie Ereignisse zu aktualisieren
- 8. Wählen Sie Tag onchange Ereignisse Ausgabe
- 9. Zwei Ereignisse auf einer Onclick
- 10. Wie funktioniert Stringstream intern?
- 11. Wie funktionieren Intents intern?
- 12. Wie funktioniert Firebug intern?
- 13. Wie funktionieren Datenbanken intern?
- 14. Wie ist (,) intern definiert?
- 15. Wie funktioniert printf intern?
- 16. Wie zu deaktivieren Anchor-Tag onclick Ereignisse innerhalb div-Element?
- 17. Wie kann ich Onclick-Ereignisse in Wordpress-Menüs hinzufügen
- 18. Trigger js Ereignisse wie onclick von einer externen js Datei
- 19. Wie kann ich OnClick-Ereignisse nur einmal ausführen?
- 20. make onchange funktioniert wie onchange und nicht wie onleave?
- 21. C++ Lambda Callback - Wie erfasst man Variablen?
- 22. Prevent Submit-Button mit Onclick-Ereignisse von
- 23. Swipe und OnClick Ereignisse in RecyclerView
- 24. Capturing Linearlayout onClick Ereignisse mit Image Inneren
- 25. Ereignisse von AngularJS zu Javascript
- 26. Wie wird dieser Zeiger erfasst?
- 27. So rufen Sie eine Funktion vom Kontrollkästchen onclick oder onchange
- 28. Wie speichert Neo4j Daten intern?
- 29. Wie funktioniert JS Promises intern?
- 30. Wie ASP.net-Bundling intern arbeitet
Sie möchten vielleicht überprüfen http://StackOverflow.com/Questions/9682092/Databinding-in-angularjs –
@fastreload Vielen Dank! Ich habe diesen Artikel gerade gelesen, aber es ist immer noch nicht klar. Laut diesem Artikel verwendet AngularJS $ apply() und $ digest() für die Dirty-Prüfung. Aber wer nennt diese Funktionen? Verwendet das 'eckige' Modul etwas wie setInterval() zum Abfragen? – firia2000
Es gibt einige Ereignisbeobachter, die "Digest" -Phasen initiieren, Stewie Antwort hat einige Details. –