Директива по кодам клавиш AngularJS

Я пытаюсь написать директиву AngularJS для запуска функции при нажатии клавиши Escape:

HTML

<input type="text" custom-keypress="consoleLog()">

JS

var app = angular.module('app', []);

app.controller('appCtrl', function($scope) {
  $scope.consoleLog = function () {
    console.log('works')
  }
});

app.directive('customKeypress', function () {
    return function (scope, element, attrs) {
        element.bind("keydown keypress", function (event) {
            if(event.which === 27) {
                scope.$apply(function (){
                    scope.$eval(attrs.ngEnter);
                });

                event.preventDefault();
            }
        });
    };
});

К сожалению, когда я нажимаю клавишу Escape, ничего не происходит.

Вот мой Плункер.

Есть идеи, что я делаю не так?

2 ответа

Решение

Вы указали неверное значение атрибута на вашем $eval вызов. Разбитые и исправленные - http://plnkr.co/edit/0fsKoHAAgTvl4l2z8SfJ?p=preview

должно быть: scope.$eval(attrs.customKeypress);

Это не работает, потому что у вас нет ng-enter приписывать. Так должно быть:

scope.$eval(attrs.customKeypress);
Другие вопросы по тегам