我有一个Angular指令绑定$ document上的所有keypress事件并将它们广播到rootScope。
问题是每次按键都会触发两次。为什么会这样?我甚至删除了rootScope广播片段,但我仍然看到双重事件被拾取
.directive('keypressEvents', function ($document, $rootScope) {
return {
restrict: 'A',
link: function () {
console.log('Linking keypress listener to document.');
$document.bind('keypress', function (e) {
console.log('keypress detectected on $document. Broadcasting to $rootScope');
$rootScope.$broadcast('keypress', e, String.fromCharCode(e.which));
});
}
}
})
我在视图中使用它:
<div class="row topPad60 leftPad70" keypress-events ng-cloak>
other stuff...
</div>
修改 我试图取消绑定侦听,但我仍然看到事件在第一次页面加载时被触发两次(意味着指令不应再次加载)