首页 > 解决方案 > ember 等待用户填写表单

问题描述

在 ember 中,我有一个表单询问用户他们的远程服务器的用户名和密码,然后我想通过进行 ajax 调用来验证凭据。目前,我正在使用一个定制的组件,它允许我在单击下一步或提交时绑定任何操作,我可以在其中验证凭据并在需要时抛出错误。但是一旦发生错误,用户就不能点击下一步按钮(组件的实现方式),因此不会发生第二次验证。所以,我想创建一个计算属性来查找用户名和密码(因此在输入时进行 ajax 调用)。但是这种方法的问题是:每次在这些框中输入内容时,都会触发计算属性,从而进行 ajax 调用(我不想无缘无故地进行这么多网络调用)。

标签: ember.js

解决方案


更好的方法是将 oninput 与操作一起使用:

<input oninput={{action "onInput" value="target.value"}}> 

然后使用 ember-lifeline 插件(本示例)中的 debounceTask 或使用 ember-concurrency从操作onInput debounce调用到 ajax 函数:

actions: {
   onInput(val){
      debounceTask(this, 'sendAjax', val, 500);
   }
}

推荐阅读