我创建了一个绑定(bind)键盘快捷键的 Angular Directive(指令)。但是,一旦它被绑定(bind),它就会保持对所有其他 div 的绑定(bind)。但我只附加到一个 div。当用户在该 div 中单击时,我如何在执行后取消绑定(bind)并重新绑定(bind)。 例如:
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');
}
});
}
} });
在 Controller 中
$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>
感谢任何建议。
最佳答案
不要使用 $document。链接函数获取一个作用域,并将它应用到的元素传递给它。
link: function(scope, iElem){
iElem.bind(...
}
当您绑定(bind)到文档时,它会监听使文档(页面)冒泡的事件。如果您只是绑定(bind)到元素本身,您只会在该元素具有焦点并且事件发生时触发事件处理程序。
关于javascript - 如何取消绑定(bind)angularjs中的键盘快捷键事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37955898/