我有一个非常简单的作者模型,其中包含一个字段,名称。我的作者/新模板中有一个表单,在提交时调用操作保存。
<form {{action "save" on="submit"}}>
{{input value=model.name placeholder="Name"}}<br>
<input type="submit" value="Save">
</form>
在我的authors / new路线中,我定义模型为作者创建记录,然后定义动作保存以保存此模型。
import Ember from 'ember';
export default Ember.Route.extend({
model() {
return this.store.createRecord('author');
},
actions: {
save() {
this.get('model').save();
}
}
});
但是,当我单击“保存”按钮时,我的控制台中出现以下错误。
Uncaught TypeError: this.get(...).save is not a function
。任何人都可以帮助我解决我做错的事情吗?
答案 0 :(得分:0)
最简单,最干净的方法是将模型传递给您的保存功能:
<form {{action "save" on="submit" model}}>
save(model) {
model.save();
}
答案 1 :(得分:0)
尝试仅对嵌套路由使用modelFor
。
由于您只在路由中实现model
挂钩,因此ember将使用默认实现应用所有其他挂钩。
它会将model
上的模型挂钩返回的内容设置为controller
。
所以你在这里可以做的是:
let newAuthor = this.get('controller.model');
newAuthor.save().then(() => { return console.log('it saved!') });