当我提交表单时,我收到以下回复:
{"data":{"attributes":{"title":null,"description":null},"type":"cards"}}
我不确定为什么我将title
和description
视为空。
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>
答案 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创建控制器,您可以移动现有的保存操作。这应该有效。