0

大きな問題があります。私のモデルには、「インシデント」、「問題」、「ユーザー」というオブジェクトがあります。問題にはインシデント オブジェクトとの属している関係があり、埋め込まれていません。ユーザー オブジェクトは、問題に埋め込まれたオブジェクトであり、属している関係でもあります。私のサンプルでは、​​課題を作成し、レポーター (ユーザー オブジェクト) を発行してサーバーに投稿するように設定します。

次のエラーが表示されます。


キャッチされないエラー: loadedDatarootState.loaded.updated.inFlight 状態でイベントを処理しようとしました。未定義で呼び出されます


投稿後、新しい課題オブジェクトをインシデントに設定し、インシデントをサーバーで更新する必要があります。問題を解決するにはどうすればよいですか?

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();
     }
}
4

1 に答える 1

0

問題を引き起こす可能性のあるコードで私が見ることができる1つの違いは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();
}
...

それが役に立てば幸い。

于 2013-08-13T10:28:02.467 に答える