AngularJS Keypress Keycode指令

时间:2015-06-01 19:21:21

标签: javascript angularjs keypress keycode

我正在尝试编写一个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键时没有任何反应。

Here's my Plunker

知道我做错了吗?

2 个答案:

答案 0 :(得分:1)

您在$eval电话上定位了错误的属性值。分叉并固定 - http://plnkr.co/edit/0fsKoHAAgTvl4l2z8SfJ?p=preview

应该是:scope.$eval(attrs.customKeypress);

答案 1 :(得分:0)

它不起作用,因为您没有ng-enter属性。它应该是:

scope.$eval(attrs.customKeypress);