emberjs如何在对象中获取表单值?

时间:2016-04-06 08:15:36

标签: ember.js

模板/ module.hbs

<form class="" method="post" {{ action "step1" on="submit"}}>
{{input type="email" value=email}}
{{input type="checkbox" checked=permission}}
{{input type="submit" value="next"}}
</form>

如何在路径

中的对象(如model.email和model复选框)中访问电子邮件和复选框值

路由/ module.js

export default Ember.Route.extend({
model() {
    return this.store.createRecord('wizard');
},
actions: {
  step1(){
     alert(this.controller.get('model.email')); // returns undefined
     // get form values like model.email model.checkbox
  },
}

模型/ wizard.js

export default DS.Model.extend({
  email: DS.attr('string'),
  permission: DS.attr('boolean')
});

更新: [[提醒返回未定义]]

2 个答案:

答案 0 :(得分:3)

首先,您必须创建模型。假设你正在研究模型user

//routes/module.js
export default Ember.Route.extend({
  model() {
    return this.store.createRecord('wizard');
  },
  actions: {
    step1(){
     this.controller.get('model.email')// you will get email value here.
     // get form values like model.email model.checkbox
    }
}

然后在模板中你必须使用相同的格式

//templates/module.hbs
<form class="" method="post" {{ action "step1" on="submit"}}>
{{input type="email" value=model.email}}
{{input type="checkbox" checked=permission}}
{{input type="submit" value="next"}}
</form>

答案 1 :(得分:0)

如果您不想对最简单的请求使用模型,则可以使用jQuery的serialize方法。

btnQueryClicked() {
  const $form = $('.bar-query-query');
  const params = $form.serializeArray();

  // convert parameters to dictionary
  const paramsDict = {};
  params.forEach((param) => {
    paramsDict[param['name']] = param['value'];
  });

  $.post('/query', paramsDict)
    .done((data) => {
      console.log(data);
    });
},

上面的代码是我用来制作最简单的查询请求,仅用于数据显示。 (这不是那个优点,但你明白了)

对我来说,仅为一个简单的请求创建一个模型太重了,无论如何都不需要持久化。