2

私は、ember モデルのライフサイクルに関するすべてを理解するのに苦労しています。私の問題を説明するために、このjsfiddleを作成しました。リスト内のエントリの 1 つをクリックし、値を編集し、バージョン リンクをクリックしてリストに戻ると、次のエラーが発生します。

キャッチされないエラー: loadedDatarootState.loaded.updated.uncommitted の状態でイベントを処理しようとしました。{} で呼び出される

これは何が原因ですか?オブジェクトの状態が現在ダーティであることはわかっていますが、リストが開かれているときにすべてのオブジェクトを強制的に更新するにはどうすればよいですか?

また、フォームが保存されていない場合にプロパティへのすべての変更を破棄する方法について何か提案はありますか? オブジェクトのクローンを作成し、そのクローンを編集フォームで使用して、保存時にオリジナルとマージすることを考えていました。最初に想像したほど簡単ではありません。

最新の ember と ember-data を使用。

4

1 に答える 1

3

@tchak との簡単な議論の後、解決策はバージョン ルートの終了関数をオーバーライドし、現在のモデルをロールバックすることである可能性があります。

App.VersionRoute = Ember.Route.extend({
  exit: function() {
    var controller = this.controllerFor(this.templateName),
        content = controller.get('content');

    if (content.get('isDirty')) {
      content.get('transaction').rollback(); 
    }
    this._super();
  }
});
于 2013-01-04T13:31:08.663 に答える