10

違いは何ですか

// 'this' is the controller
this.get('model').save();

// 'this' is the controller
this.get('model').get('store').commit();

? 私が行った小さなテストのうち、どちらも同じ結果が得られました。どちらを使用する必要がありますか?

私は最初のものを調べました、そしてそれは呼び出します

DS.Model = Ember.Object.extend(
  ...
  save: function() {
    this.get('store').scheduleSave(this);

    var promise = new Ember.RSVP.Promise();

    this.one('didCommit', this, function() {
      promise.resolve(this);
    });

    return promise;
  }, 

this.get('store').scheduleSave(this)そこで質問は、との主な違いは何this.get('store').commit()ですか?

DS.Store = Ember.Object.extend(DS._Mappable, {
  ...
  scheduleSave: function(record) {
    get(this, 'currentTransaction').add(record);
    once(this, 'flushSavedRecords');
  },
  ...
  /**
    This method delegates committing to the store's implicit
    transaction.

    Calling this method is essentially a request to persist
    any changes to records that were not explicitly added to
    a transaction.
  */
  commit: function() {
    get(this, 'defaultTransaction').commit();
  },

どちらが良いかわかりません。私は save() に傾いています。なぜなら、それは店を包み込むように見えるからです。

(これらのコードを github で見つけることができませんでした。github または emberjs の amazonaws バージョンが最新かどうかはわかりません。github の同様のバージョンは次のとおりです。ストアの scheduleSave( )を呼び出すモデルの save()と、ストアのコミット() )

4

1 に答える 1

7

どちらを使用する必要がありますか?

使用することをお勧めしますthis.get('model').save()

this.get('store').scheduleSave(this)との主な違いは何this.get('store').commit()ですか?

同じ実行ループ中に多くのレコードを保存する場合scheduleSave、複数のレコードが同じトランザクションに保存されるように変更をバッチ処理します。場合によってcommitは、他のレコードへの変更が永続化される可能性があります。

于 2013-06-26T04:53:09.727 に答える