我正在尝试使用新的余烬数据语法,如下所述:https://github.com/emberjs/data/blob/master/TRANSITION.md(从交易已删除:保存个人记录)。
当我点击保存按钮时,我在控制台中收到错误Uncaught TypeError: Cannot call method 'save' of undefined
。同样在网络选项卡中,没有对api的POST请求。
模板
<script type="text/x-handlebars" data-template-name="landcode/new">
Code: {{input value=code}}<br />
Image: {{input value=image}}<br />
<button {{action 'saveLandcode'}}>opslaan</button>
app.js (相关代码)
App.Router.map(function() {
this.resource("landcodes"),
this.resource("landcode", function() {
this.route("new");
});
});
App.LandcodeNewRoute = Ember.Route.extend({
model: function() {
this.store.createRecord('landcode');
},
actions: {
saveLandcode: function(){
this.modelFor('landcode').save(); // does not save
}
}
});
App.ApplicationAdapter = DS.RESTAdapter.extend({
namespace: 'api'
});
App.Store = DS.Store.extend({
adapter: 'App.ApplicationAdapter'
});
App.Landcode = DS.Model.extend({
code: DS.attr('string'),
image: DS.attr('string')
});
答案 0 :(得分:2)
您正在使用this.modelFor('landcode')
这将从App.LandcodeRoute
获取返回的模型,但您的模型是从LandcodeNewRoute
返回的。只需使用this.currentModel
,因为您需要当前路线的模型。
App.LandcodeNewRoute = Ember.Route.extend({
model: function() {
return this.store.createRecord('landcode');
},
actions: {
saveLandcode: function(){
this.currentModel.save();
}
}
});
答案 1 :(得分:2)
您的模型应包括路线名称
App.LandcodeNewRoute = Ember.Route.extend({
model: function() {
return this.store.createRecord('landcode');
},
actions: {
saveLandcode: function(){
this.modelFor('landcode.new').save(); // the correct model
}
}
});