Ember.js 事务创建对象

Ember.js 事务创建对象,ember.js,ember-data,Ember.js,Ember Data,我有个大问题。在我的模型中,我有以下对象“事件”、“问题”、“用户”。该问题与事件对象具有belongsTo关系,且未嵌入。用户对象是该问题的嵌入对象,也是belongsTo关系。在我的示例中,我想创建一个问题,然后将报告器(用户对象)设置为问题并将其发布到服务器 我得到以下错误: 未捕获错误:试图在状态为rootState.loaded.updated.inFlight时处理事件loadedDataon。用未定义的 发布后,新问题对象应设置为事件,事件必须在服务器上更新。 我如何解决这个问

我有个大问题。在我的模型中,我有以下对象“事件”、“问题”、“用户”。该问题与事件对象具有belongsTo关系,且未嵌入。用户对象是该问题的嵌入对象,也是belongsTo关系。在我的示例中,我想创建一个问题,然后将报告器(用户对象)设置为问题并将其发布到服务器

我得到以下错误:


未捕获错误:试图在状态为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();
}
...
希望能有帮助