如何设置输入字段的值并让它在提交到Ember.js操作时更新?

时间:2014-02-07 14:19:18

标签: ember.js handlebars.js

在把手模板上,我想用值预先填充输入字段。我可以通过put value = object.property来做。然后,用户应更新该值,当他们单击激活操作的按钮时,该值应提交给Component。

问题是没有提交任何值,而不是预先填充的值或新值。当我在console.log中提交给组件的内容时,文本字段的输入是“未定义”,而数字字段的输入是“NaN”。

这是我的车把模板:

{{input type="text" value=object.name valueBinding='newName'}}
{{view App.NumberField min='1' value=object.count valueBinding='newCount'}} 
<button {{action updateObjectDetails object}}>Save</button>

它提交的相关组件:

App.ObjectsDetailsComponent = Ember.Component.extend({
  actions: {
    updateObjectDetails: function(object){
      object.set("name", this.get('newName'))
      object.set("party_size", parseInt(this.get('newCount')))
      object.save();
    }
  }
});

有没有办法用正确的值填充输入字段并让它通过操作提交?

1 个答案:

答案 0 :(得分:1)

啊,明白了。问题是不要像创建新对象时那样尝试使用valueBindings,而是使用实际值,因为实际值正在变化。所以在组件中,它是object.get('name'),而不是this.get('newName')。

因此车把应该是这样的:

{{input type="text" value=object.name}}
{{view App.NumberField min='1' value=object.count}} 
<button {{action updateObjectDetails object}}>Save</button>

这样的组件:

App.ObjectsDetailsComponent = Ember.Component.extend({
  actions: {
    updateObjectDetails: function(object){
      object.set("name", object.get('name'))
      object.set("party_size", parseInt(object.get('count')))
      object.save();
    }
  }
});