gpt4 book ai didi

javascript - EmberView 'keydown' 和 'keypress' 事件不渲染?

转载 作者:行者123 更新时间:2023-12-04 17:00:57 25 4
gpt4 key购买 nike

我有一个带有 keyDown 的 EmberApp我打算在呈现特定 View 时提供的事件,我们称之为 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
}

});

正如你可以从我的代码中看到的那样, View 确实插入了一个 click事件也将“单击”记录到控制台中,但不用于 keydown事件。

我四处搜寻,似乎我需要将焦点放在“ View ”上才能获得 keyDown事件注册。所以我将此添加到我的 didInsertElement功能:
this.$().focus();

但是,这也不起作用。在旁注中,我添加了 keyDown事件到扩展 Ember.TextArea 的 Textarea View 它确实注册了 keyDown事件。

我在这里想念什么?

最佳答案

所以我想出了问题所在,答案在于除非主要元素关注它,否则无法触发“keydown”事件。当然,正如我的代码指定的那样,这可以通过以下方式解决

this.$().focus();

但是,它的深度为 1 级。这个 EmberView 渲染的默认元素是一个 div,它必须是一个 div。除非您明确使用 'tabindex' 属性,将其设置为 -1(不能用标签进入)或 0(可以用标签进入并且是可聚焦的),否则 Div 不能被“聚焦”。

所以我在我的 View 的 didInsertElement 中做了这个
didInsertElement(){
this.$().attr('tabindex',0);
this.$().focus();
},
keyDown:function(){
console.log('keydown function was triggered') ; // This time it logs itself fine
}

关于javascript - EmberView 'keydown' 和 'keypress' 事件不渲染?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20317667/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com