我试图随时随地触发按键事件输入,但我只能在使用ng-keypress指定DOM元素时达到此目的。
我使用纯JavaScript与此代码达到了此结果:
document.onkeydown = function(e){
if(e.keyCode === 13){
//do something
}
}
但我不确定这是不是最好的方式,也不是'#34;棱角分明的方式"这样做。
答案 0 :(得分:2)
我将它包装在指令中并从那里开始,例如:
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>
答案 1 :(得分:1)
在嵌套控制器上调用函数...
您可以在ng-keypress
代码中使用内置<body>
指令:
<body ng-keypress="enterKeyPressed($event)">
可以绑定到模块的$rootScope
块中run()
上的函数:
app.run(function($rootScope) {
$rootScope.enterKeyPressed = function(e) {
if (e.keyCode === 13) {
$rootScope.$broadcast("EnterKeyPressed");
}
};
});
这会引发一个事件,可以使用控制器中的$scope
来获取:
$scope.$on("EnterKeyPressed", function() {
vm.incrementCounter();
});
<强>演示强>
答案 2 :(得分:-1)
如果您正在使用AngularJS,那么您应该http://angular-data-grid.github.io/demo/bootstrap/multiple.html使用最外层的HTML元素。
例如:
<body ng-keydown="myKeyDownFunction($event)"></body>
$scope.myKeyDownFunction = function($event) {
if($event.keycode === 13) {
// Do what you need to do
}
}
答案 3 :(得分:-1)