2

私は ember-data の最新リビジョンを使用しており、ほとんどのモデルを ember-data で管理する必要がある典型的な状況にあるため、ストアでコミットするとバックエンドと同期します。ある特定のケースでは、クライアント側でのみ使用されるモデルがあります (ただし、実行中のアプリで他の ember-data モデルと関係があるため、これを DS.Model として作成しました)。

「汚れた」または「新しい」ように見えないようにするために、モデル自体に何をマークできますか

オブジェクトの作成時にこのようなことを試みましたが、奇妙な理由でまだ変更が追跡されています

App.Foo.createRecord({name: 'foo', loaded: true, new: false, dirty: false});
4

1 に答える 1

2

モデルを独自のトランザクションに追加できます。

transaction = this.get('store').transaction();
myObject = transaction.createRecord(App.Foo, {name: 'foo', loaded: true, new: false, dirty: false});
transaction.commit();
// or alternatively: myObject.transaction.commit()

通常の store.commit() は、このトランザクションのオブジェクトには影響しません。

Ember は実際にはバックグラウンドでデフォルトのトランザクションを作成します。これは、ネイキッドの this.get('store').commit(); を呼び出すとコミットされます

次のようにして、既存のレコードをトランザクションに追加することもできます。

foo = App.Foo.find(1);
transaction = this.get('store').transaction();
transaction.add(foo);
foo.set('name', 'bar');
transaction.commit();

トランザクションをコミットしたくない場合、およびトランザクションで行った変更を放置したくない場合は、次のように呼び出すことができます。

transaction.rollback();
于 2013-02-07T11:47:06.343 に答える