我的第一个角度应用程序是一个非常基本的测量工具。我有多个选择题,每个答案都有一个按钮,而基本功能则是在按钮单击时记录每个答案,如下所示:
ng-click="logAnswer(answer.id)"
我正在寻找的是能够向文档中添加一个按键事件,该事件将监听键盘响应1、2、3、4、5,该响应与按钮选择匹配并调用相同的功能。
在四处搜索时,只有在特定输入字段获得焦点后,我才能找到与按键相关的响应,这对我没有帮助。我确实在此Angular.js按键事件和工厂上找到了OP响应,似乎朝着正确的方向前进,但我无法弄清楚如何得到他的指令来调用函数。
我在我的js中包含了指令:
angular.module('keypress', []).directive('keypressEvents', function($document, $rootScope) { return { restrict: 'A', link: function() { $document.bind('keypress', function(e) { $rootScope.$broadcast('keypress',e , String.fromCharCode(e.which)); }); } } })
但是我不确定如何在控制器中使用键绑定对象:
function keyedS(key, parent_evt, evt){ // key is the key that was pressed // parent_evt is the keypress event // evt is the focused element object } $scope.keyBindings = { 's': keyedS }
如何使键绑定对象侦听正在侦听的键并启动我需要的功能?
谢谢
在您的控制器中捕获rootscope发出的事件:
$rootScope.$on('keypress', function (e, a, key) { $scope.$apply(function () { $scope.key = key; }); })
key 然后就可以在控制器中使用了。
key
这是一个小提琴