Ember.js 事务创建对象
我有个大问题。在我的模型中,我有以下对象“事件”、“问题”、“用户”。该问题与事件对象具有belongsTo关系,且未嵌入。用户对象是该问题的嵌入对象,也是belongsTo关系。在我的示例中,我想创建一个问题,然后将报告器(用户对象)设置为问题并将其发布到服务器 我得到以下错误:Ember.js 事务创建对象,ember.js,ember-data,Ember.js,Ember Data,我有个大问题。在我的模型中,我有以下对象“事件”、“问题”、“用户”。该问题与事件对象具有belongsTo关系,且未嵌入。用户对象是该问题的嵌入对象,也是belongsTo关系。在我的示例中,我想创建一个问题,然后将报告器(用户对象)设置为问题并将其发布到服务器 我得到以下错误: 未捕获错误:试图在状态为rootState.loaded.updated.inFlight时处理事件loadedDataon。用未定义的 发布后,新问题对象应设置为事件,事件必须在服务器上更新。 我如何解决这个问
未捕获错误:试图在状态为rootState.loaded.updated.inFlight时处理事件
loadedData
on。用未定义的
发布后,新问题对象应设置为事件,事件必须在服务器上更新。 我如何解决这个问题
setupController: function(controller, model){
this._super(controller, model);
var transaction = this.get('store').transaction();
var issue = transaction.createRecord(App.Issue, {});
controller.set('model', issue);
var appController = this.controllerFor('application');
controller.set('reporter',appController.get('user'));
}
saveIssue: function(){
var issue = this.get('model');
var rep = this.get('reporter');
issue.set('reporter',rep);
var transaction = issue.get('transaction');
if(transaction != null){
transaction.commit();
}
}
我在您的代码中看到的一个可能导致问题的差异是,在
setupController
中,您正在使用商店的defaultTransaction
:
var transaction = this.get('store').transaction();
但是在saveIssue
中,您使用的是issue
模型自己的事务,它可能是或不是同一事务:
var transaction = issue.get('transaction');
因此,我的建议是在两个地方使用相同的事务,例如在saveIssue
中:
var transaction = this.get('store').transaction();
if(transaction != null){
transaction.add(issue);
transaction.commit();
}
...
希望能有帮助