javascript - 使用 AngularUI 作为热键

标签 javascript angularjs

我正在使用 AngularUI 按键指令,但它给我带来了问题。我可以创建一个文本字段并向其附加一个按键事件(基本上这正是 AngularUI 页面上的演示中的内容)。

<textarea ui-keypress="{13:'keypressCallback($event)'}">

我正在尝试为页面上的按钮注册热键,但当我将相同的 ui-keypress 事件附加到按钮(或页面的主体)时,它不起作用。如何让我的热键正常工作?

最佳答案

构建你的。 我所做的方法是创建 2 个指令,一个用于按键,一个用于 keyup

创建模块(我称之为 yourapp)后,您可以创建指令。

yourapp.directive('keyPress', function () {
  return function (scope, elm, attrs) {
    elm.bind('keypress', function (e) {
      var intKey = (window.Event) ? e.which : e.keyCode;
      if (intKey === attrs.key) {
        if (scope.theater === 1) {
          scope.$apply(attrs.keyPress);
        }
      }
    });
  };
});

yourapp.directive('keyUp', function () {
  return function (scope, elm, attrs) {
    elm.bind('keyup', function (e) {
      var intKey = (window.Event) ? e.which : e.keyCode;
      if (intKey === attrs.key) {
        if (scope.theater === 1) {
          scope.$apply(attrs.keyUp);
        }
      }
    });
  };
});

所以你可以这样使用它:

<div key-press="doSomething()" key="13"> // enter
<div key-up="doSomething()" key="27"> // esc

注意:这个(window.Event)? e.which : e.keyCode; 将使其跨浏览器。

关于javascript - 使用 AngularUI 作为热键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14712374/

相关文章:

javascript - 为什么我的应用程序告诉我我的方法未定义?

javascript - 同一 Controller 上的 Angular 多个 ajax 调用有时不起作用

javascript - 使用 javascript 和 jquery 将图像添加到 svg 文件

angularjs - Angular未定义,引用错误?

javascript - 在 angularJS 中使用自定义 Canvas 指令不会显示任何内容

angularjs - 如何在整个页面上显示 ui-router 状态?

AngularJS $interval 函数在路由更改后继续

javascript - 为什么我的 promise 没有兑现?

javascript - 多个选择器上的 jQuery on() 方法

Javascript 开放时间倒计时