我有一个EmberApp,它有一个keyDown
事件,我打算在渲染特定视图时使其可用,我们将其称为PostsCommentView
。为此,我执行以下操作:
App.PostsCommentView = Ember.View.extend({
eventManager:Ember.Object.extend({
keyDown:function(event,view){
console.log("keydown"); // I CAN see this
},
click: function(event,view){
console.log("clicked"); // I CAN see this
}
})
didInsertElement:function(){
console.log("I have been inserted"); // I CAN see this
}
});
正如您从我的代码中所读到的,视图确实会插入,并且click
事件也会将“单击”日志记录到控制台中,但keydown
事件不会。
我搜索了一下,似乎需要将焦点设置在'view'上,以便注册keyDown
事件。因此,我将以下内容添加到我的didInsertElement
函数:
this.$().focus();
然而,这也不起作用。顺便说一句,我向扩展Ember.TextArea
的Textarea视图添加了keyDown
事件,它确实注册了keyDown
事件。
我错过了什么?
1条答案
按热度按时间kfgdxczn1#
所以我发现哪里出了问题,答案在于“keydown”事件不能被触发,除非main元素有一个焦点。当然,正如我的代码所指定的,这可以用
然而,它是一级深。这个EmberView呈现的默认元素是一个div,并且它必须是一个div。除非你显式地使用'tabindex'属性,将其设置为-1(不能被定位到)或0(可以被定位到并且是可聚焦的),否则Div不能被“聚焦”。
所以我在视图的didInsertElement中执行了此操作