模板
{{input type="email" value=email placeholder="email"}}
<button {{action "addUser"}} type="submit">Add</button>
Run Code Online (Sandbox Code Playgroud)
控制者
export default Controller.extend({
actions: {
addUser: function(){
//some codes here
$.ajax({
//some codes here
}).then(()=>{
alert("success");
});
}
}
});
Run Code Online (Sandbox Code Playgroud)
当我按下按钮并调用函数时,addUser我需要禁用按钮,直到整个函数执行完毕
请帮忙..!
有两种方法可以做到这一点。
这意味着您应该在控制器上具有一个属性,并将其设置为true任务运行时
export default Controller.extend({
actions: {
addUser: function(){
this.set('addUserRunning', true);
//some codes here
$.ajax({
//some codes here
}).then(()=>{
alert("success");
}).always(() => {
this.set('addUserRunning', false);
});
}
}
});
{{input type="email" value=email placeholder="email"}}
<button type="submit" disabled={{addUserRunning}} {{action "addUser"}}>Add</button>
Run Code Online (Sandbox Code Playgroud)
有一个称为ember-concurrency的插件。您需要浏览文档以了解如何使用它。您将使用任务而不是操作,并且task具有其状态的属性。
将会是这样的:
import { task } from 'ember-concurrency';
export default Controller.extend({
addUser: task(function* () {
//some codes here
yield $.ajax({
//some codes here
});
alert("success");
}).drop()
});
{{input type="email" value=email placeholder="email"}}
<button type="submit" disabled={{addUser.isRunning}} onclick={{perform addUser}}>Add</button>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
90 次 |
| 最近记录: |