Angularjs 如果在文档中的任何位置按某个键,如何获取按键?

Angularjs 如果在文档中的任何位置按某个键,如何获取按键?,angularjs,Angularjs,我尝试在任何时间和任何地方按enter键触发keypress事件,但我只能通过使用ng keypress在DOM元素中指定来实现这一点 我使用纯javascript和以下代码实现了这个结果: document.onkeydown = function(e){ if(e.keyCode === 13){ //do something } } 但我不确定这是最好的方法,还是“角度方法”。如果您使用AngularJS,您应该在最外层的HTML元素上 例如: <bod

我尝试在任何时间和任何地方按enter键触发keypress事件,但我只能通过使用ng keypress在DOM元素中指定来实现这一点

我使用纯javascript和以下代码实现了这个结果:

document.onkeydown = function(e){
    if(e.keyCode === 13){
      //do something
    }
}

但我不确定这是最好的方法,还是“角度方法”。

如果您使用AngularJS,您应该在最外层的HTML元素上

例如:

<body ng-keydown="myKeyDownFunction($event)"></body>

$scope.myKeyDownFunction = function($event) {
    if($event.keycode === 13) {
         // Do what you need to do
    }
}

$scope.myKeyDownFunction=函数($event){
如果($event.keycode===13){
//做你需要做的事
}
}

调用嵌套控制器上的函数…

您可以在
标签上使用内置的
ng按键
指令:

<body ng-keypress="enterKeyPressed($event)">
这会引发一个事件,可使用
$scope
从控制器中拾取该事件:

$scope.$on("EnterKeyPressed", function() {
  vm.incrementCounter();
});
演示


我想这个问题已经得到了回答

假设您使用Angular1,我认为可以找到答案


假设您使用的是Angular2,我认为可以找到答案

我会将其包装在一个指令中,然后从那里开始,例如:

angular.module("myApp").directive("keypressDetector", function() {
    return {
        restrict: "A",
        link: function(scope, elem, attrs) {
            document.onkeydown = function(e){
                if(e.keyCode === 13){
                    //do something
                }
            }
        }
    }
})
并使用它:

<body keypress-detector></body>


我的控制器在body标记内,当我将其放入first-in控制器内时,它不起作用。@William我已更新了我的答案,以反映您的控制器嵌套在body标记内(而不是上)。
<body keypress-detector></body>