我正在使用Ember CLI,并注意到了奇怪的行为。当用户点击输入并按下回车键时,页面将刷新。
我的页面有这样一个基本元素,它不是任何表单的一部分:
<input type="text" class="form-control" id="per_page" value="50">
我目前通过以下方式为页面提供服务:
ember cli
因此,node正在托管,并且正在进行精彩的实时重新加载,这样当我更新作为底层应用程序一部分的页面时。
那么,是什么导致页面重新加载输入中按下的回车键?它是节点还是实时重新加载?当用户按下回车键,而我在我的HTML虚拟书中错过了该键时,输入是否应该刷新页面?
**更好的是,我如何拦截并通过以下方式调用函数:
{{action**"myFunction"}}
3条答案
按热度按时间gj3fmq9x1#
这是因为当您点击Enter键时,表单将被提交,从而导致页面重新加载。您需要做的是在表单上设置
onsubmit="return false"
,这样提交期间不会发生任何事情。通过添加action属性action="doSomething"
,可以绑定输入以执行某些操作46qrfjad2#
**编辑:**在Ember 3+中,您现在可以使用
{{on}}
修饰符来设置元素上的事件。动作定义如下
历史上,Ember用以下代码处理了这个用例:
这会阻止窗体刷新页面。
还有另一种方法可以让您更好地控制事件,让您可以自己管理事件:
在这种情况下,您将得到一个事件,必须调用
event.preventDefault()
来停止页面刷新。这是两个示例的运行示例:https://ember-twiddle.com/827820958e054f7af57b7677630729fc?openFiles=controllers.application.js%2C
ss2ws0br3#
我也遇到了同样的问题-对我有效的是,在输入组件中重写keyPress Event,如下所示:
希望它能帮助将来的人!:)