gpt4 book ai didi

javascript - 在 Ember.js v2+ 中检测按键

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:43:34 24 4
gpt4 key购买 nike

我在检测 ember v2.3.0 中的按键时遇到问题。我是 ember 的初学者,我尝试编写显示按下的键的简单组件。但是我在运行操作和获取参数时遇到了问题。基本上我可以在 didRender 中使用 this.$().on("keypress",function(){ ... }); 来获取 keyCode,但我认为这在 Ember 中不是一个好的做法。有人可以帮我吗?请。 :)

这是我的代码: http://emberjs.jsbin.com/vucenomibo/edit?html,js,output

HTML:

  <script type="text/x-handlebars" data-template-name="application">
<h2>Welcome to Ember.js</h2>
{{outlet}}
</script>

<script type="text/x-handlebars" data-template-name="index">
{{my-component item=this setAction="smth"}}
</script>

<script type="text/x-handlebars" data-template-name="components/my-component">
<div class="app-body" {{action "smth"}} >
Pressed: {{pressedKeyCode}}
</div>
</script>

JS:

App = Em.Application.create();

App.IndexController = Em.Controller.extend({
actions : {

}
});

App.MyComponentComponent = Em.Component.extend({
didRender: function() {
console.log(this.get('context'));
console.log(this.get('item'));
return this.$().attr({ tabindex: 1 }), this.$().focus();
},
pressedKeyCode: null,
actions:{
smth: function(e) {
console.log('aaa');
this.send('displayKey', String.fromCharCode(e.keyCode));
},
displayKey: function(keyCode) {
this.get('item').set('pressedKeyCode', keyCode);
}

}
});

编辑
我是这样做的: http://emberjs.jsbin.com/qipeponiqu/1/edit?html,js,output

有人可以评论一下吗?我想学习最佳实践。 :)

最佳答案

官方 Ember.js 指南中有一节关于 handling events这应该会有帮助。

如果你想让你的组件处理 keydown 你可以这样做:

import Ember from 'ember';

export default Ember.Component.extend({
didRender: function() {
this.$().attr({ tabindex: 1 });
this.$().focus();
},
shortcutKey: null,

keyDown(event) {
this.set('shortcutKey', String.fromCharCode(event.keyCode));
}
});

参见 full Ember Twiddle其余部分,但模板与您的相同。

关于javascript - 在 Ember.js v2+ 中检测按键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34958499/

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