如何在 Angularjs 中观察按键组合? [复制]

2023-11-26

我正在尝试让我的控制器监视按键组合。为了便于论证,我们可以说:上、下、下、左、右、左、右 b a。无论用户当前位于页面的哪个位置,我怎样才能有角度地寻找这些内容?


看起来你可以使用ng-keydown去做这个。

这里有一个工作笨蛋.

对于这个示例,我刚刚绑定ng-keydown to <body>。可以很好地捕获全局的所有键盘事件。

正如@charlietfl 指出的那样,ng-keydown注册了很多键盘事件,因此要使其可用将需要大量工作。例如,如果您尝试监听组合(例如ctrl + r),那么ctrl密钥将注册多次。

JS:

var myApp = angular.module('myApp', []);

myApp.controller('Ctrl', function($scope) {


    $scope.keyBuffer = [];

    function arrays_equal(a,b) { return !(a<b || b<a); }

    $scope.down = function(e) {

      $scope.keyBuffer.push(e.keyCode);

      var upUp = [38, 38, 40, 40, 37, 39, 37, 39, 66, 65];
      if (arrays_equal(upUp, $scope.keyBuffer)) {

        alert('thats it!');
      }
    };

  });

HTML:

<body ng-controller="Ctrl" ng-keydown="down($event)">
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Angularjs 中观察按键组合? [复制] 的相关文章

随机推荐

  • 如何在 Mac 中使用 Python 获取活动窗口标题?

    我正在尝试编写 Python 脚本 在 Mac OS 中使用 python 打印活动窗口的标题 这是我的代码 from AppKit import NSWorkspace active app name NSWorkspace shared
  • 如何将光标位置设置为输入的左上角

    让我有一个如下所示的输入字段 如何将光标位置设置为此输入字段的左上角 这应该有效 input padding top 0 padding left 0 line height 1em this probably doesn t matter
  • 检测鼠标是否位于画布内的对象上方

    我在画布元素内创建了一条线 我正在寻找最简单的方法来检测鼠标的位置是否位于画布内部的线条内 我已经使用此函数来查看鼠标在画布内的位置 但我对应该如何进行感到非常困惑 function getMousePos c evt var rect c
  • 更改 Laravel 5.7 中验证电子邮件的默认“主题”字段

    我正在尝试更改默认值subjectLaravel 5 7 附带的验证电子邮件中的字段 我该如何以及在哪里更改它 我已经到处和网上搜索过了 因为它是全新的 所以我找不到答案 您不需要编写任何代码 该通知将所有字符串包装在 Lang 类中 以便
  • 从 SQL 视图执行 SQL 存储过程

    我发现在 Excel 中调用存储过程并不像应有的那么容易 但是调用视图或直接表非常容易 那么 如何创建一个视图来调用没有参数的存储过程 我知道我无法将任何值传递到视图中 并且我不需要或不想这样做 只是想将存储过程包装在视图中 就像是sele
  • 如何识别哪个引脚被轻敲

    我有一个应用程序MKMapView以及这张地图上的大量图钉 每个引脚都有rightCalloutAccessoryView 我这样创建它 UIButton rightButton UIButton buttonWithType UIButt
  • 查询远程服务器上磁盘空间的最佳方法

    我试图通过查询所有驱动器然后循环直到找到我正在寻找的驱动器来确定远程服务器上的可用空间 有一个更好的方法吗 Dim oConn As New ConnectionOptions Dim sNameSpace As String mnb co
  • 在请求 URL 中公开表名和字段名

    我的任务是创建这个 Joomla 组件 是的 joomla 但它无关 一位教授告诉我 我应该使我的代码尽可能动态 需要较少维护的代码 并避免硬编码 我们最初想到的方法是获取 url 参数 将它们转换为对象 然后将它们传递给查询 假设我们要读
  • Android SDK 管理器不显示要安装的包

    我已经安装了 Android SDK 和软件包 由于我在Eclipse上打开新项目时出现错误 我决定卸载SDK并重新安装 现在的问题是我没有看到要安装的软件包 我只能看到 Android SDK 工具 如何重新安装并查看所有软件包 对于所有
  • 从构造函数初始值设定项列表传递 this

    在以下代码中将 this 传递给初始值设定项列表中的另一个对象时是否存在任何问题 class Callback public virtual void DoCallback 0 class B Callback cb public B Ca
  • Javascript图像上传和显示

    我的基本任务是选择图像并显示它 而不将其保存在数据库中 为了这 1 我在html中做了一个select标签 通过它我可以上传图像 2 我制作了一个空白图像标签 其中没有图像源 备用是上传图像 3 select标签有onchange java
  • 通过 Groovy 在 Java 中解析 XML

    我正在尝试使用 Groovy 和 Java 的 ScriptEngine API 解析 XML 下面的代码正是这样做的 但我想知道是否有更好的方法可以做到这一点 另外是否有任何与此相关的性能影响 import java util Array
  • 向量化矩阵中不同对角线的和

    我想对以下 MATLAB 代码进行向量化 我认为它一定很简单 但我发现它仍然令人困惑 r some constant less than m or n m n size C S zeros m r n r for i 1 m r 1 for
  • Tensorflow 移动应用程序:不是有效的 TensorFlow Graph 序列化:NodeDef 提到 attr“扩张”不在 Op 中

    我尝试替换示例中的 graph pb 文件https codelabs developers google com codelabs tensorflow for poets 2但它无法在 Android 中启动 并出现错误 不是有效的 T
  • 如果两个不同类的实例具有相同的属性,如何自动映射两个不同类的实例之间的值?

    我有两个类 它们具有完全相同的成员 属性和字段 和相同的数据类型 我想以自动方式将成员从一个映射到另一个 我知道有更实用的开发方式可以处理 一种简单的解决方案是手动将每个成员从一个实例映射到另一个实例 但是 我想将其自动化作为一些通用解决方
  • iOS 14.2 Beta - AVPlayer 无法播放 [关闭]

    Closed 这个问题是基于意见的 目前不接受答案 Apple 在 iOS 14 2 beta 中对 iOS 14 0 的 AVFoundation 进行了重大更改 正在播放控制中心 UI 更改等 问题是 在 iOS 14 0 中完美运行的
  • 存储 SEPA(IBAN 和 BIC)数据 - 需要 PCI 合规性吗?

    我们希望使用银行 API 从我们的银行帐户到用户的银行帐户进行 SEPA 转账 为此 用户需要在表格中输入他的 IBAN 和 BIC 我们获取这些数据 受 SSL 保护 并使用银行 REST API 转账 如果我们收到成功响应 我们会向用户
  • 如何安装 Rails MySQL 适配器?

    我的问题仅此而已 gem install mysql不起作用 我还没有通过谷歌搜索找到任何东西 当我尝试时gem install mysql2 这就是我得到的 我现在不知道该怎么办 jason buster projects mcif ra
  • 使用全宽,不包括溢出滚动条和“位置:绝对”

    我希望在固定顶部位置有一个全宽的小红色 div 位于另一个具有overflow scroll 我希望 jsFiddle 说清楚 http jsfiddle net mCYLm 2 问题是红色 div 与滚动条重叠 我猜right 0意味着右
  • 如何在 Angularjs 中观察按键组合? [复制]

    这个问题在这里已经有答案了 我正在尝试让我的控制器监视按键组合 为了便于论证 我们可以说 上 下 下 左 右 左 右 b a 无论用户当前位于页面的哪个位置 我怎样才能有角度地寻找这些内容 看起来你可以使用ng keydown去做这个 这里