如何在AngularJS中按键

时间:2015-07-03 14:24:33

标签: javascript angularjs angularjs-directive angularjs-ng-repeat keypress

我有以下代码:

的index.html:

<a href="" class=”buttonone" ng-click="tool.disc()">
    <i class=”buttonone"></i>
</a>

controller.js:

angular.module(’app')

我怎样才能当有人按下按键示例时输入密钥&#39; tool.disc()方法被触发了吗?我想我可以使用angularjs ngKeydown指令,但我不知道如何在上面的代码示例中实现它。有人可以尝试帮忙吗?谢谢!

3 个答案:

答案 0 :(得分:1)

您不能直接在Enter key press上直接调用该功能,使用功能检查是否按下了Enter键,然后调用您的功能。

您无法在锚点上收听 Keypress 事件。

HTML:

<input type="text" ng-keypress="myFunc(e)" />
<!--               ^^^^^^^^^^^^^^^^^^^^^^^ -->
<i class=”buttonone"></i>

控制器:

$scope.myFunc = function (event) {
    if (event.keyCode === 13) {
        console.log('Enter key pressed');

        $scope.tool.disc(); // Call your function here
    }
};

答案 1 :(得分:0)

ng-keypressng-keydown可以解决问题:

 <div ng-keypress="yourFunction($event)> </div>

然后在您的函数中,您可以使用

测试密钥的代码
$event.keyCode;

例如,如果您想要输入:

$scope.yourFunction = function(event){
  if(event.keyCode == 13){
     console.log("Enter press");
  }
}

修改:

因为有时它没有角度想要的那么多,所以有一个指令:

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

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

此处此处用于输入,您可以根据需要更改键码。要使用它,您只需在每个元素中执行此操作:

<a href="" class="buttonone" ng-enter="function()" ng-click="tool.disc()">
    <i class=”buttonone"></i>
</a>

答案 2 :(得分:0)

元素需要专注于工作。要使此示例有效,您需要单击该链接,然后按一个键。

<a href="" ng-keydown="keydown($event)">Keydown</a> 

$scope.keydown = function (event) {
    if (event.keyCode === 13) {
        console.log('Enter key pressed');
    }
};

要在加载后自动对焦元素,可以使用

element[0].focus()

否则,请考虑以下事项:

$document.addEventListener('keyup', function (e) { console.log(e) })