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

标签 ember.js handlebars.js

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

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

这是我的 Handlebars 模板:

{{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();
    }
  }
});

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

最佳答案

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

因此 Handlebars 应该是这样的:

{{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();
    }
  }
});

关于ember.js - 如何设置输入字段的值并在提交到 Ember.js 操作时更新它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21630062/

相关文章:

javascript - Ember 数据未获取关系

ruby-on-rails - Rails 引擎中的 Ember CLI 应用程序

java - 使用映射中的值作为 mustache 模板映射中另一个值的键

json - 带有 Handlebars 模板的嵌套 {{each}} 循环

handlebars.js - 如何使用带有 nodemailer 的 Handlebars 发送电子邮件?

javascript - 如何使用 HandlebarJS 加载多个模板

javascript - Handlebars 中的{{^是什么意思

javascript - EmberJS : Computed property with get/set rendered in template

javascript - 在 ember 中使用highlight.js

javascript - 如何将 Ember.JS 与数据库连接?