假设我有一组可编辑的用户,当编辑该用户时,当您键入绑定的输入文本字段时,ember将同步更新所有视图。
这很酷,但从UX的角度来看,它可能会产生误导..这些值在服务器上根本没有改变。我想做的是推迟视图更新,直到我设置它基于来自服务器的成功消息在相应的操作方法中。
我发现当我使用{{bind-attr value=firstName}}
代替{{input value=firstName}}
时,确实不再更新输入字段的视图,但是在操作提交方法中不再可以访问新输入的值通过this.get('firstName')?
Example.hbs
<script type="text/x-handlebars" id="user">
<h3>Edit {{fullName}}</h3>
<p>
<label>First Name</label>
{{input value=firstName}}
</p>
<p>
<label>Last Name</label>
<input {{bind-attr value=lastName}} />
</p>
<p>
<button {{action 'submit'}}>Submit</button>
</p>
</script>
示例控制器
App.UserController = Ember.ObjectController.extend({
actions: {
submit: function(){
// call to server, on confirmation set 'Globally' first and last names
console.log(this.get('firstName') + " - " + this.get('lastName'));
}
}
});
这是我的jsbin: http://jsbin.com/jipik/2/edit?html,js,console,output
答案 0 :(得分:0)
您只需要一组辅助变量。将名为firstNameEdited
的变量添加到控制器,并将其值初始设置为firstName
。值将您的输入字段绑定到此新值,并将此新值提交给您的api调用。成功返回API调用后,请使用值firstName
更新firstNameEdited
。