我有以下$broadcast
趕上按鍵在角:AngularJS - 在同一時間多個按鍵
$document.bind('keypress', function(event) {
var key = event.which;
$rootScope.$broadcast('keypress', event);
$rootScope.$broadcast('keypress:' + key, event);
});
和我一起$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);
});
所以,如果我有多個按鍵,然後創建正確的$broadcast
。然而問題,成爲該訂單現在最重要的(即,如果我按a
然後enter
,則$broadcast
是keypress:58keypress:13
,如果我按另一種方式,我得到keypress:13keypress:58
)
是的,我正在考慮這一點。但是我想把它變成一項服務,並且在我注入的地方使它變得可用。我修改了我的問題 – Kousha