我有以下内容$broadcast来捕获Angular中的按键:
$document.bind('keypress', function(event) {
var key = event.which;
$rootScope.$broadcast('keypress', event);
$rootScope.$broadcast('keypress:' + key, event);
});
Run Code Online (Sandbox Code Playgroud)
我听着 $on
但是,我想检测何时同时按下两个键,比如说enter和s同时按下(不是一个组合后跟另一个组合).
这样做的最佳方式是什么?
编辑
我在想的是:
var keys = [];
$document.bind('keydown', function(event) {
keys[event.which] = true;
});
$document.bind('keyup', function(event) {
delete keys[event.which];
});
$document.bind('keypress', function(event) {
var key = event.which;
var keysPressed = [];
angular.forEach(keys, function(value, key) {
keysPressed += 'keypress:' + key;
});
$rootScope.$broadcast('keypress', event);
$rootScope.$broadcast(keysPressed, event);
});
Run Code Online (Sandbox Code Playgroud)
所以如果我有多个按键,那么我创建正确的$broadcast.然而,问题在于,订单现在很重要(例如,如果我按下a那么enter,那么$broadcast是keypress:58keypress:13 …