如何推迟Ember视图从绑定输入字段同步更新

时间:2014-02-27 19:47:31

标签: ember.js

假设我有一组可编辑的用户,当编辑该用户时,当您键入绑定的输入文本字段时,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

1 个答案:

答案 0 :(得分:0)

您只需要一组辅助变量。将名为firstNameEdited的变量添加到控制器,并将其值初始设置为firstName。值将您的输入字段绑定到此新值,并将此新值提交给您的api调用。成功返回API调用后,请使用值firstName更新firstNameEdited