4

レコードに加えられた変更を破棄する推奨される方法は何ですか?

ダーティ レコードを元の状態に戻すには、次のロジックがあります。

if controller.get('isDirty')
  controller.get('content').rollback()

これは、レコードのコミットに失敗しない限り機能します。

変更をコミットしようとしてサーバーがエラーを返した場合、この方法でレコードをロールバックすることはできなくなります。この場合、Ember Data または RESTAdapter は、レコードを元の状態に戻す組み込みメソッドを提供しますか?


DS.RESTAdapterEmber Data リビジョン 11のパッケージを使用しています

4

2 に答える 2

2

理由はわかりませんが、明らかに機能するものを見つけました。これが私のモデルで行うことです:

App.User = DS.Model.extend({

  becameInvalid: function(errors) {
    this.get('transaction').rollback();
    //this.rollback(); <- This doesn't work. You get becameClean error.
  }
});

その問題に対するsly7-7からのコメントは、私にアイ​​デアを与えました.

于 2013-03-26T12:12:26.203 に答える
1

ルーターでのトランザクションを通じてレコードを作成/更新します。その方法の詳細については、こちらを参照してください。

var transaction = App.store.transaction()
transaction.createRecord(App.Foo);
transaction.commit()
transaction.rollback()
于 2013-02-04T11:02:00.373 に答える