Ember Data不提交提交数据

时间:2016-07-02 21:41:26

标签: javascript ember.js ember-data

当我提交表单时,我收到以下回复:

{"data":{"attributes":{"title":null,"description":null},"type":"cards"}}

我不确定为什么我将titledescription视为空。

routes/cards/new.js

actions: {
  save() {
    const newCard = this.get('store').createRecord('card', this.get('model'));
    newCard.save().then((card) => {
      this.transitionTo('cards.all');
    });
  },
  cancel() {
    this.transitionTo('cards');
  }
}

templates/cards/new.hbs

<form>
  <div>
    <label>Title:</label>
    {{input type="text" value=model.title}}
  </div>
  <div>
    <label>Body:</label>
    {{textarea rows="5" value=model.description}}
  </div>
  <div>
    <button {{action 'save'}}>Speichern</button>
    <button {{action 'cancel'}}>Abbrechen</button>
  </div>
</form>

回购链接:https://github.com/ghoshnirmalya/hub-client

3 个答案:

答案 0 :(得分:1)

您没有正确地将.hbs的标题和说明传递给路线。在您触发操作保存后创建模型。更改model.title的{​​{1}}并对说明执行相同操作。将它们传递到您的路线:title。然后在保存操作中定义两个参数,如:{{ save title description }}。我相信你可以弄明白其余的。

答案 1 :(得分:1)

以下是我在路线中经常做的事情:

setupController(controller /*, model */ ) {
    this._super(...arguments);
    Ember.set(controller, 'newCard', {}); //newCard is an empty object
},
actions: {
    save(newCard) {
        Ember.assert('Model is missing or undefined', newCard);
        let newCard = this.store.createRecord('card', newCard);
        newCard.save().then(( /* response */ ) => {
            this.transitionTo('cards.all');
        }, (error) => {
            //handle error
        });
    }
}

在您的模板中,您可以执行以下操作:

<form id="save" {{action "save" newCard on="submit"}}>
    {{input name="title" id="title" value=newCard.title type="text"}}
    <button class="button" type="submit">Save</button>
</form>

希望这会有所帮助。杰夫

答案 2 :(得分:1)

你在评论中提到了

  

执行console.log(this.get('model'))只打印模型函数

这就是你问题的答案!因为在路线上你可能有模型钩子功能。所以this.get('model')将返回函数而不是model。 因此,为cards / new.js创建控制器,您可以移动现有的保存操作。这应该有效。