我有一个Ember组件用于模态,模态通常包含表单,所以我在组件中使用keyPressed
方法来捕获各种事件,包括任何enter
事件(键码13)。这会得到所有的enter事件,除了那些来自焦点{{input}}
字段的事件。看起来Ember是故意阻止这些事件冒泡的,并且我可以从输入中捕获所有其他按键事件。
我还没有找到一个干净的方法来从我的组件中捕获事件。我不想扩展任何东西并使用它,或者在特定的控制器上使用操作,或者其他类似的东西,因为它们都感觉像是一些非常简单的肮脏的变通方法,而且看起来也像是一个明显的用例。我该如何做呢?
编辑:一个小例子,帮助我澄清一下我的意思。我希望当用户在输入字段中点击enter时,keyPressed
运行。
// Relevant section of component
App.MyModalComponent = Ember.Component.extend({
// ...
keyPressed: function (e) {
if (e.which === 13) {
console.log('Do something here, like submit the form');
}
},
// ...
});
// Example of template
{{#my-modal}}
<form>
{{input value=foo}}
</form>
{{/my-modal}}
2条答案
按热度按时间2w3kk1z51#
你说的是
keyPress
吗?我不认为keyPressed
是一个受支持的事件()。http://emberjs.jsbin.com/ciqomaqo/1/edit
iyfjxgzm2#
如果它是用于提交表单,那么使用浏览器的表单提交功能是有意义的。您也可以使组件元素本身成为表单: