[英]can't save/update record using ember-data
我的路由器定义以下内容:
this.resource('uoms', { path: '/uoms' }, function() {
this.route('new');
});
uoms
路由定义为:
App.UomsRoute = Ember.Route.extend({
model: function() {
return this.store.find('uom');
},
actions: {
save: function() {
this.modelFor('uoms').save().then(function() {
console.log("saved UOMs");
});
}
}
});
但是由于某种原因,当我尝试保存它时,我得到了:
未捕获的TypeError:对象[object Object]没有方法'save'
有人可以帮助我确定我在做什么错吗?
----更新----
我还从控制器尝试了以下操作,但结果相同:
App.UomsController = Ember.ArrayController.extend({
actions: {
save: function() {
this.get('model').save().then(function() {
console.log("saved UOMs");
});
}
}
});
----更新2 ----
查看this.get('model')
调用返回的对象,我们得到以下信息:
这就是我要做的:
this.get('model')
。 检查控制台输出是否确实是您期望的。 很有可能不是您要保存的模型实例。 您将在控制台中执行this.get('model').save()
时看到相同的错误。
顺便说一句:为什么要使用ArrayController
而不是ObjectController
。 看起来您将其用于单个模型。 有关更多详细信息,请参阅文档 。
编辑:
试试this.get('model').get('transaction').commit()
我遇到的问题是我试图在记录数组而不是单个记录上调用save()
。 出现此问题的原因是,我正在对单个记录进行操作,但在ArrayController
执行了此操作。 我认为这没有什么错,尽管可以说我应该创建一个名为“ edit”的子路由,然后假定我的代码逻辑会起作用。
就是说,如果您想像我一样做(也就是在ArrayController中保存单个记录),那么此代码将起作用:
save: function(id) {
var promise = this.store.find('uom',id).then(function(uom){
console.log(uom);
uom.save();
});
}
然后在模板中输入如下内容:
<span class="glyphicon glyphicon-floppy-disk" {{action "save" id}}></span>
这有效,但不是最佳答案。 相反,你可以在指定ArrayController
的ObjectController
与itemController
财产。 下面是使用此策略的save()
和deleteRecord()
处理程序的示例:
App.PluralController = Ember.ArrayController.extend({
itemController: 'singular'
});
App.SingularController = Ember.ObjectController.extend({
actions: {
save: function() {
this.get('model').save();
},
deleteRecord: function() {
this.get('model').deleteRecord();
this.get('model').save();
}
}
});
然后,您需要对车把模板执行以下操作:
<span class="glyphicon glyphicon-floppy-disk" {{action "save" this}}></span>
<span class="glyphicon glyphicon-remove-circle" {{action "deleteRecord" this}}></span>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.