Javascript 余烬键盘快捷键

Javascript 余烬键盘快捷键,javascript,ember.js,keyboard-shortcuts,Javascript,Ember.js,Keyboard Shortcuts,我有一个余烬应用程序,我想添加键盘快捷键。无论用户在应用程序中的哪个位置,特定的组合键都应该有效,也就是说,无论用户在哪个位置的控制器、视图或路线,按键都应该触发一个动作。为此,我必须在我的应用程序中收听按键事件。我尝试使用一个mixin,该mixin将混合到ApplicationView,不幸的是,keyPress事件仅在视图具有焦点且应用程序视图不总是具有焦点时才会传播。我试过: App.ApplicationView = Em.View.extend(App.KeyBoardShortcu

我有一个余烬应用程序,我想添加键盘快捷键。无论用户在应用程序中的哪个位置,特定的组合键都应该有效,也就是说,无论用户在哪个位置的控制器、视图或路线,按键都应该触发一个动作。为此,我必须在我的应用程序中收听
按键
事件。我尝试使用一个mixin,该mixin将混合到
ApplicationView
,不幸的是,
keyPress
事件仅在视图具有焦点且应用程序视图不总是具有焦点时才会传播。我试过:

App.ApplicationView = Em.View.extend(App.KeyBoardShortcutsMixin,{
  didInsertElement: function() {
    this.$().focus();
  } 
});

这不会达到我的目的,因为在用户与应用程序交互之前,
keyPress
事件工作正常,但一旦该视图失去焦点,它将不再触发。由于我有大量的视图,将视图混合到应用程序中可能创建的每个视图中似乎是浪费。如何以干净的方式添加此功能?

我不知道您想用快捷方式做什么,但如果您将按键事件绑定到应用程序主体,则应该触发具有焦点的事件

Ember.$('body').on('keypress', function(e) {
  console.log('do something');
});
下面是一个带有“回车键”的图示:


再一次,如果没有更多关于你在混音中要完成什么的细节,很难回答你的问题。

我当然可以这样做,但我想知道是否有更惯用的方法在余烬中完成同样的任务?不必求助于jquery。我想在mixin中做的是向当前活动的控制器发送一个操作,并让控制器处理该操作。从未听说过页面级别的内置事件侦听器。。。如果仍要使用内置的keypress视图挂钩,则必须使用$('body')或$(document)来侦听事件或手动触发视图上的焦点。通常的做法是将事件处理程序
keypress
添加到视图中。看见我预计这件事会突然发生,但我不知道。您可能希望尝试将处理程序放入应用程序视图上的
eventManager
散列中。