428 Stimmen

Wie man ein Tastendruck-Ereignis in AngularJS verwendet?

Ich möchte das KeyPress-Ereignis der Eingabetaste im untenstehenden Textfeld erfassen. Um es klarer zu machen, verwende ich ein ng-repeat , um das tbody zu füllen. Hier ist der HTML-Code:

Das ist mein Modul:

angular.module('components', ['ngResource']);

Ich verwende eine Ressource, um die Tabelle zu füllen, und mein Controller-Code lautet:

function Ajaxy($scope, $resource) {
//Controller, der eine Ressource hat, um die Tabelle zu füllen
}

0voto

Eassa Nassar Punkte 622

Sie können ng-keydown, ng-keyup, ng-press wie folgt verwenden.

Um eine Funktion auszulösen:

Oder wenn Sie eine Bedingung haben, wie z.B. wenn er Escape drückt (27 ist der Schlüsselcode für Escape)

....

0voto

FreshPow Punkte 6182

Ich denke, document.bind zu verwenden ist etwas eleganter

constructor($scope, $document) {
  var that = this;
  $document.bind("keydown", function(event) {
    $scope.$apply(function(){
      that.handleKeyDown(event);
    });
  });
}

Um document im Controller-Konstruktor zu erhalten:

controller: ['$scope', '$document', MyCtrl]

0voto

Mukundhan Punkte 2909
(function(angular) {
  'use strict';
angular.module('dragModule', [])
  .directive('myDraggable', ['$document', function($document) {
    return {
      link: function(scope, element, attr) {
         element.bind("keydown keypress", function (event) {
           console.log('keydown keypress', event.which);
            if(event.which === 13) {
                event.preventDefault();
            }
        });
      }
    };
  }]);
})(window.angular);

0voto

Konkret Punkte 851

Alles, was Sie tun müssen, um das Ereignis zu erhalten, ist folgendes:

console.log(angular.element(event.which));

Ein Direktive kann es tun, aber das ist nicht wie Sie es tun.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X