В чем разница между
// '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 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 или amazonaws emberjs последней. Вот аналогичные версии в github: model save(), который вызывает store scheduleSave() и сохранить commit())