Подтвердить что ты не робот

Отменить изменение модели данных ember

Можно ли легко вернуться к изменению модели Ember Data?

У меня есть модель, связанная с видом редактирования. Это представление позволяет пользователю отменить редактирование, после чего я хотел бы вернуть изменения в модель. Есть ли простой способ сделать это без клонирования всех значений сбоку?

4b9b3361

Ответ 1

Ember Data поддерживает концепцию транзакций. Мы можем создать транзакцию и присвоить им записи данных Ember, и если мы хотим отменить изменения, мы можем вызвать метод rollback() транзакций. Также, если мы не создаем явную транзакцию, записи присваиваются транзакции по умолчанию, которая может быть отброшена путем вызова метода rollback() самого объекта DS.store.

Ответ 2

Начиная с версии Ember Data версии 2, транзакций больше нет, но вы можете reset модели до их последнего статуса до сохранения выпусков с помощью:

model.rollbackAttributes();

Ответ 3

Название транзакции по умолчанию называется "defaultTransaction". Фактически, когда Embers совершает, он использует эту транзакцию по умолчанию. Я не могу напрямую использовать откаты непосредственно в магазине.

Вместо использования store.rollback вы должны иметь что-то вроде:

store.get('defaultTransaction').rollback()

или (если вы находитесь в диспетчере событий маршрутизатора)

event.get('store.defaultTransaction').rollback()

Ответ 4

Вы также можете сделать rollback в самой модели, если она находится в состоянии "isDirty".

this.get('model').rollback();

Пример

export default Ember.ObjectController.extend({

 actions: {
    cancelEditModel: function(){

        this.get('model').rollback();

        this.transitionToRoute('...');

        return false;
    }
  }
});