2013-04-01 31 views
3

我正在使用EmberJS和Ember數據(修訂版11),並試圖在事務成功完成時轉換到另一個路由。問題是這個頁面允許對模型進行編輯以及將項目添加到該模型的hasMany集合並將其刪除。EmberJS確定事務已成功提交

我現在有如下:

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

myModel.transaction.commit() 

如果如果任何它的hasMany孩子也發生了變化的基於myModel一直沒有改變這隻會不斷轉型。

我真的在尋找一種方式要麼:

  • 有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不起作用的事實可能是一個錯誤。如果我直接在模型上定義回調,它會調用。