Директива по кодам клавиш 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);