2013-04-01 5 views
3

Я использую EmberJS с данными Ember (версия 11) и пытаюсь перейти на другой маршрут, когда транзакция завершилась успешно. Проблема заключается в том, что эта страница позволяет редактировать модель, а также добавлять и удалять элементы в коллекцию hasMany на этой модели.EmberJS Определите, когда транзакция выполнена успешно

То, что я в настоящее время выглядит следующим образом:

myModel.one "didUpdate", this, -> 
    @transitionTo "anotherRoute", myModel 

myModel.transaction.commit() 

Который будет только когда-либо переход, если MyModel был изменен не если из его hasMany дети изменились, а также.

Я действительно искал способ либо:

  • Have бег событий didUpdate когда все hasMany дети для MyModel были успешно сохранены
  • Крюк в обратный вызов на сделку, когда все модели имеют быть успешно сохранены.

ответ

3

Я столкнулся с этой проблемой. Мое настоящее решение состоит в том, чтобы наблюдать за состоянием операции:

observer = (target, path) => 
    if target.get(path) is 'saved' 
    target.removeObserver path, null, observer 
    @doSomething() 

@get('content').addObserver 'stateManager.currentState.name', null, observer 
@get('content.transaction').commit() 

То, что didUpdate не работает, может быть ошибкой. Если я определяю обратный вызов непосредственно на модели, он вызывает вызов.

Смежные вопросы