我创建了一个绑定键盘快捷方式的角度指令。但是,一旦这是绑定,它将保持所有其他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>
感谢任何建议。
答案 0 :(得分:0)
不要使用$ document。 link函数获取一个范围及其应用的元素传递给它。
link: function(scope, iElem){
iElem.bind(...
}
当您绑定到文档时,它正在侦听冒出文档(页面)的事件。如果你只是绑定到元素本身,那么当元素具有焦点并且事件发生时,你只会触发事件处理程序。