我有一个ember应用程序,我想添加键盘快捷键。无论用户在应用程序中的哪个位置,特定的键组合都应该起作用,也就是说,无论控制器,视图或用户在任何位置的路径如何,按键都应触发操作。为此,我必须在我的应用中收听keyPress
事件。我尝试使用将混合到ApplicationView
的mixin,遗憾的是,keyPress
事件仅在视图具有焦点且应用程序视图不会始终具有焦点时才会传播。我试过了:
App.ApplicationView = Em.View.extend(App.KeyBoardShortcutsMixin,{
didInsertElement: function() {
this.$().focus();
}
});
这不会达到我的目的,因为keyPress
事件在用户与应用程序交互之前工作正常,但是一旦此视图失去焦点,它将不再触发。由于我有大量的视图,将视图mixin混合到可能在应用程序中创建的每个视图中似乎很浪费。如何以干净的方式添加此功能?
答案 0 :(得分:1)
我不知道你想用你的快捷方式做什么,但是如果你将keypress事件绑定到应用程序的主体,那么无论焦点是什么都应该触发事件
Ember.$('body').on('keypress', function(e) {
console.log('do something');
});
以下是“输入密钥”的插图:http://emberjs.jsbin.com/zukazazo/2/edit
再一次,没有关于你想要在mixin中完成什么的更多细节,很难回答你的问题。