1

この例に従って、AngularJSでEnterキーを押してフォームを送信します

しかし、私はそれを機能させることができません。それは完全に不可解です。keypress イベントがディレクティブによってトラップされないのはなぜですか?

http://plnkr.co/edit/A9oio2F61yHssE49aiCb?p=preview

app.directive('enterKey', function($log) {
    return function(scope, element, attrs) {
        element.bind("keydown keypress", function(event) {
            if(event.which === 13) {

                scope.$apply(function(){
                    scope.$eval(attrs.ngEnter, {'event': event});
                });
                event.preventDefault();
            }
        });
    };
});
4

1 に答える 1

1

attrs.ngEnterディレクティブ名をattrs.enterKey変更したため、ディレクティブにコピーペーストの間違いがあります。

scope.$apply(function(){
    scope.$eval(attrs.enterKey, {'event': event});
});

さらに、イベントを受け入れるにはevent、メソッド内にパラメーターを追加する必要がありますalertMe

$scope.alertMe = function(event) {
    alert('I am alerted!');
}
于 2015-08-15T19:55:07.413 に答える