2013-07-16 16 views
4

我的應用程序具有用於從後端讀取的一組實體的新/編輯表單。Ember數據 - 從表單導航時回滾

當我打開這樣的表單並填寫/編輯某些字段,然後離開時,即使我沒有提交這些更改,記錄在實體列表中也會發生變化。重新加載應用程序(從後端重新加載數據)修復了問題,但不是一個選項。

我試過在窗體視圖的willDestroyElement中做一些事務回滾,但是這看起來根本錯誤,因爲即使在成功的窗體提交後(實際上與Attempted to handle event rollback on X while in state rootState.loaded.updated.inFlight崩潰)它也被調用。

對於涉及從表單導航的任何用例,我將如何去忽略所有未提交的表單更改(類似於按下取消按鈕,執行事務回滾)?

使用Ember rc5,Ember數據0.13。

回答

4

退出表單路徑時,請檢查記錄的狀態。如果它(是否新款OR isDirty)和它不是isSaving,回滾:

App.FormRoute = Ember.Route.extend({ 
    deactivate: function() { 
    var model = this.controllerFor('form'); 
    if ((model.get('isNew') || model.get('isDirty')) && (!model.get('isSaving'))) { 
     model.rollback(); 
    } 
    } 
}); 
+0

我是灰燼,新手,但在燼的新版本,必須用'model.rollback();''不模型。 get('transaction')。rollback();'('model.get('transaction')'return _null_) –

+0

我們也可以使用'this.controller.content'。 – Autodidact