当前位置: 首页 > 面试题库 >

angular.js侦听keypress作为按钮的快捷方式

韩寒
2023-03-14
问题内容

我的第一个角度应用程序是一个非常基本的测量工具。我有多个选择题,每个答案都有一个按钮,而基本功能则是在按钮单击时记录每个答案,如下所示:

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 然后就可以在控制器中使用了。

这是一个小提琴



 类似资料:
  • @override public void actionPerformed(ActionEvent e){ }

  • 我想根据单选按钮的选择设置文本框的可编辑选项?如何对单选按钮上的动作监听器进行编码?

  • 问题内容: 我有主要的应用程序在哪里与值表。然后,我单击“添加”按钮,新的CUSTOM(我自己创建)出现了JDialog类型弹出窗口。在这里,我可以输入值,打一些勾,然后单击“确认”。因此,我需要从对话框中读取该输入,以便可以将此值添加到主应用程序中的表中。按下“确认”按钮时如何收听,以便在此之后可以读取该值? 问题答案: 如果在用户按下后对话框消失,请确认: 你希望有对话的行为如同一个 模态 的

  • 问题内容: 我正在尝试制作带有三个按钮的秒表,分别是“开始”,“暂停”和“停止”。我的老师只教我们如何将动作监听器设置为两个按钮。如何将动作监听器设置为三个按钮?到目前为止,这是我的编码 我还没有为“暂停”功能设置任何动作监听器,因为无论如何我都不知道如何暂停计时器。但是我想先将动作链接到按钮,然后再弄清楚如何暂停。 问题答案: 您正在寻找的是一条声明。 基本上,像往常一样将都添加到所有三个按钮…

  • 问题内容: 我怎样才能使它成为特定方法? (我知道可以用一种方法将其全部抛弃,是的。 谢谢你们, 编辑:谢谢大家的快速反应,我的解释不是很清楚。 我调查了lambda的使用,这几乎是我在想的,尽管其他方式也很不错。 再次谢谢大家。 下次我会尝试变得更清晰,更快捷。 问题答案: 同样,您的问题仍然不清楚。您上面的代码 有 一种方法,可以将代码放入其中: 或者,您可以从该方法中调用外部类的方法: 或者