在Ember中按下Enter键后的操作

24

有没有任何方式可以对这个文本输入进行操作?

<input type="text" aria-controls="existing-user-table" placeholder="Search">

如何在用户按下回车键时,在控制器上触发一个操作?

我不想把它包含在表单标签中或创建一个按钮,只是那个输入文本框。


喜欢这个问题的声音 - engma
3个回答

29
助手有一个 insert-newline 操作,当用户按下回车键时会触发。
{{input type='text' aria-controls='existing-user-table' placeholder='Search' insert-newline='myAction'}}

文本输入帮助器

插入换行文档


3
这应该是被接受的答案。如果你像之前建议的那样使用action,你将无法获取keyCode,因为你无法访问原始事件。感谢节约我时间的伙计! - Lucas
如何向 myAction 传递参数? - William Hu

29

使用{{input}}帮助程序 - 如果包括一个动作参数,当用户按下回车键时它会触发控制器上的该动作。所以:

{{input action="myAction" aria-controls="existing-user-table" placeholder="Search"}}

input helper api 文档 没有提到这个功能,但是该帮助程序仅包装了 Ember.TextField

此外,您可以通过指定 onEvent 属性 来在按键时触发操作,而不是在输入完成后才触发 enter 键:

{{input action="myAction" onEvent="keypress" aria-controls="existing-user-table" placeholder="Search"}}

4
应该是 on="keyPress" - No Surprises
1
我使用了 {{input key-press="someAction"}} 这里部分记录 - 不过不幸的是它没有传递实际按下的键。 - TrevTheDev
在我的情况下,在ember-1.8.0-beta.1中设置操作无法捕获回车键。 - aceofspades

16

从Ember v1.13.0开始,input助手上的action已经被弃用,我们应该使用enterkey-press代替action

请参阅Ember文档

{{input value=someValue enter='someAction'}}

当用户在文本输入框中按下回车键时,这将触发所述操作。


1
这段代码适用于Ember 2.0及以上版本。 someAction(content, event) { if(event.keyCode === 13) { console.log('回车键被按下,因为回车键的ASCII字符代码是13'); } } - fearis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接