【问题标题】:How to unbind an keyboard short cut events in angular js如何在angularjs中取消绑定键盘快捷键事件
【发布时间】:2016-06-21 22:55:54
【问题描述】:

我创建了一个绑定键盘快捷键的角度指令。但是,一旦绑定,它将保留所有其他 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();
    });
  });

在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>

感谢任何建议。

【问题讨论】:

    标签: javascript html angularjs


    【解决方案1】:

    不要使用 $document。链接函数获取一个作用域,并将应用它的元素传递给它。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-28
      • 1970-01-01
      • 2016-02-20
      • 2018-04-15
      • 1970-01-01
      • 2012-01-21
      相关资源
      最近更新 更多