Gibt es eine AngularJS-Methode, um durch Drücken einer Taste eine Routine in meinem Controller aufzurufen?

8

Ich erwarte, dass jemand vorschlagen wird, ich benutze jQuery (was ich geladen habe), aber um sicher zu gehen, bevor ich darüber nachdenke, wie man es implementieren kann, kann mir jemand sagen, ob es einen anderen Weg gibt, den ich schlagen kann Schlüssel (die rechte Pfeiltaste) rufen Sie eine Javascript-Funktion in meinem Controller auf.

    
Melina 16.01.2014, 17:55
quelle

2 Antworten

20

Wenn Sie Ereignisse auf dem Dokument hören möchten

  • registriert einen Ereignis-Listener, wenn der Bereich instanziiert wird
  • stelle sicher, dass du es auch zerstörst, wenn der Bereich zerstört wird
  • Ich habe auch versucht, keypress zu verwenden, aber es scheint die Pfeiltasten zu ignorieren.
  • Lesen Sie mehr: jQuery Keypress-Pfeiltasten
  • Vielleicht müssen Sie e.which verwenden: Javascript .keyCode vs. .which?
%Vor%

Was ist mit ng-keypress / ng-keydown :

?
  • ng-keypress hat das gleiche Problem mit den Pfeiltasten (Es verwendet nur element.on('keypress', ).
  • ng-keydown funktioniert wahrscheinlich genauso gut für Sie.

Was ist der eckige Weg?

  • "eckiger Weg" ist ein subjektiver Begriff, obwohl die meisten angularen Experten zustimmen würden etwas Niveau.
  • Manchmal können Sie eckig wählen zwischen verschiedenen Möglichkeiten und sie sind alle in Ordnung.
  • Es hängt immer davon ab, wie Ihre App strukturiert ist und was Sie erreichen möchten.
  • Angular.js stellt einige Spielzeuge zur Verfügung (die eingebauten Direktiven), es bedeutet nicht, dass Sie sie immer bevorzugen sollten.
  • Meine Richtlinien sind so stark wie möglich entkoppelt / einfach / clean .
  • Deklarativ bedeutet nicht immer entkoppelt / einfach / sauber (hmm ... XML)
  • Wenn sich Ihr gesamter Code in einem Controller befindet, warum also entkoppeln Sie ihn mit einer bestimmten Vorlage, die ng-event mit a specific function ?!
  • deklarieren muss
  • Ich würde immer in Erwägung ziehen, benutzerdefinierte Anweisungen für Ereignisse & amp; Handler (aber wieder kommt es auf den Anwendungsfall an).
  • Wenn Sie angular.js beherrschen (lernen Sie die Interna), finden Sie "Ihren eigenen eckigen Weg".
Ilan Frumer 16.01.2014, 18:10
quelle
2

Sie könnten ng-keypress="callFunction($event)"

verwenden

Und in Funktion

%Vor%     
Jayram Singh 16.01.2014 18:03
quelle

Tags und Links