Ember Data モデルへの変更を簡単に元に戻す方法はありますか?
編集ビューにバインドされたモデルがあります。このビューを使用すると、ユーザーは編集をキャンセルできます。その時点で、モデルへの変更を元に戻したいと思います。サイドからすべての値を複製せずにこれを行う簡単な方法はありますか?
Ember Data モデルへの変更を簡単に元に戻す方法はありますか?
編集ビューにバインドされたモデルがあります。このビューを使用すると、ユーザーは編集をキャンセルできます。その時点で、モデルへの変更を元に戻したいと思います。サイドからすべての値を複製せずにこれを行う簡単な方法はありますか?
Ember Data バージョン 2 以降、トランザクションはなくなりましたが、次の方法で、エディションを保存する前の最後の状態にモデルをリセットできます。
model.rollbackAttributes();
Ember Dataは、トランザクションの概念をサポートしています。トランザクションを作成し、Emberデータレコードをそれらに割り当てることができます。変更を元に戻したい場合は、transactions rollback()メソッドを呼び出すことができます。また、明示的なトランザクションを作成しない場合、レコードはデフォルトのトランザクションに割り当てられます。デフォルトのトランザクションは、DS.storeオブジェクト自体でrollback()メソッドを呼び出すことでロールバックできます。
デフォルトのトランザクションの名前は「defaultTransaction」です。実際、Embers がコミットすると、このデフォルトのトランザクションが使用されます。ストアで直接ロールバックを直接使用することはできません。
store.rollback を使用する代わりに、次のようにする必要があります。
store.get('defaultTransaction').rollback()
または (ルーター イベント マネージャーを使用している場合)
event.get('store.defaultTransaction').rollback()
モデルが「isDirty」状態の場合は、モデル自体をロールバックすることもできます。
this.get('model').rollback();
例
export default Ember.ObjectController.extend({
actions: {
cancelEditModel: function(){
this.get('model').rollback();
this.transitionToRoute('...');
return false;
}
}
});