如何解开角度js中的键盘快捷方式事件

时间:2016-06-21 22:55:54

标签: javascript html angularjs

我创建了一个绑定键盘快捷方式的角度指令。但是,一旦这是绑定,它将保持所有其他div的绑定。但我只附加了一个div。如何在执行后解除绑定并在用户在该div中单击时重新绑定。 例如:

angular.module('Dummy').directive('keypressEvents',
function ($document, $rootScope) {
  return {
    restrict: 'A',
    link: function () {
    $document.bind('keydown', function (e) {
      if ((e.which == '115' || e.which == '83' ) && (e.ctrlKey || e.metaKey)){
        $rootScope.$broadcast('Ctrl+s');
      }
    });
  }
}  });
控制器中的

$rootScope.$on('Ctrl+s', function (e) {
    $scope.$apply(function () {
      $scope.doDummyAction();
    });
  });

in html

 <div keypress-events>this is a div that binds keyboard shortcut</div>
  <div>Another div which doesn't need a short cut key</div>

感谢任何建议。

1 个答案:

答案 0 :(得分:0)

不要使用$ document。 link函数获取一个范围及其应用的元素传递给它。

link: function(scope, iElem){
  iElem.bind(...
}

当您绑定到文档时,它正在侦听冒出文档(页面)的事件。如果你只是绑定到元素本身,那么当元素具有焦点并且事件发生时,你只会触发事件处理程序。