EmberJS中的全局keyDown / keyPress事件,无需设置焦点

时间:2013-12-02 19:31:28

标签: javascript-events ember.js global keydown

我曾经有一个jQuery应用程序,在文档准备好后有一个'keydown'事件。基本上,只要用户点击一个键,它就会匹配键码并做一些事情。现在我把这个应用程序移植到Ember,生活变得困难有两个原因:

1)唯一可以注册'keyDown'事件的时间是包含元素/ View的焦点。使用非输入字段可以完成的唯一方法是设置tabindex值,为此,我这样做:

didInsertElement:function(){
            this.$().attr("tabindex",0);
            this.$().focus(); //bringing focus to the view in order to ensure keyDown event is triggered :)
     },

    keyDown:function(event){
            var keycode = event.which || event.keycode;
            switch(keycode){
                   //perform various events
            }
    }

2)所以上面的工作就像一个魅力,除了它在应用程序上创建一个丑陋的突出显示焦点,每当应用程序失去焦点时,keyDown事件不会触发。我需要明确地单击ApplicationView区域(这不是整个主体)。

我真正想要的是让一个简单的keydown事件触发,就像我在jQuery中使用它时一样。任何机构都有想法是什么了?

1 个答案:

答案 0 :(得分:0)

Ember专门捕获在ember应用程序范围内发生的事件,因此如果你想捕获应用程序外部的事件(因为你的整个页面不是一个ember应用程序),而不必专注于ember你必须在ember范围之外创建那些事件。