Как откатить изменения отношений в EmberData

У меня есть две модели отношений между родителями и детьми: тренировка и тренировка:

App.Training = DS.Model.extend({
  exercises: DS.hasMany('App.Exercise')
})

App.Exercise = DS.Model.extend({
  training: DS.belongsTo('App.Training')
})

Я хочу иметь страницу, где отображается тренировка со всеми связанными с ней упражнениями. Если пользователь нажимаетEdit Кнопка, страница становится редактируемой с возможностью добавления новых упражнений. Я тоже хочу иметьCancel кнопка, которая отменяет все сделанные изменения.

Вот мой контроллер:

App.TrainingsShowController = Em.ObjectController.extend({
  editing: false,

  edit: function() {
    this.set('editing', true);
    transaction = this.get('store').transaction();
    transaction.add(this.get('model'));
    this.get('model.exercises').forEach(function(x){
      transaction.add(x);
    });
  },

  cancel: function() {
    this.set('editing', false);
    this.get('model.transaction').rollback();
  },

  save: function() {
    this.set('editing', false);
    this.get('model.transaction').commit();
  },

  addExercise: function() {
    this.get('model.exercises').createRecord({});
  }
})

В контроллере есть четыре обработчика событий:

edit: Пользователь нажалEdit кнопка: транзакция создана, страница помещена в "Редактирование» Режим.cancel: Пользователь нажалCancel кнопка: транзакция откатывается назад и обратно на "Нормальный" Режим.save: Пользователь нажалSave кнопка: транзакция совершена и возвращается кНормальный" Режим.addExercise: Пользователь нажалAdd exercise Кнопка: создается новое упражнение (в той же транзакции) и добавляется в тренинги.

Функция отката работает нормально, за исключением вновь созданных записей: если я нажмуEdit добавьте новое упражнение и нажмитеCancel Кнопка, только что созданное упражнение остается на странице.

Каков наилучший способ избавиться от сброшенной записи о ребенке?

UPDATE: Я

Мы создали jsFiddle для воспроизведения проблемы, но это сработало. В отличие от моего приложения здесь я использовал:DS.FixtureAdapterhttp://jsfiddle.net/tothda/LaXLG/13/

Затем я'мы создали другой, используяDS.RESTAdapter и проблема обнаружилась:http://jsfiddle.net/tothda/qwZc4/5/

В скрипте попробуйте: Edit, Add new и затем Rollback.

Я понял, что в случае RESTAdapter, когда я добавляю новую дочернюю запись вhasMany отношения, родительский отчет выигралгрязный. Это выглядит нормально, но когда я откатываю транзакцию, вновь созданная дочерняя запись остается в родительской записи.ManyArray

Я до сих пор нене знаю, чтоЭто лучший способ справиться с ситуацией.

Ответы на вопрос(4)

Ваш ответ на вопрос