2012-06-07 27 views
12

是否有方法可以輕鬆地還原對Ember Data模型的更改?將更改還原爲餘燼數據模型

我有一個模型綁定到編輯視圖。此視圖使用戶可以取消編輯,此時我想恢復對模型的更改。有沒有簡單的方法來做到這一點,而不克隆所有的價值觀?

+2

'對象.get('transaction')。rollback()' –

回答

6

Ember Data支持事務的概念。我們可以創建一個事務並將Ember數據記錄分配給它們,如果我們想撤銷這些更改,我們可以調用事務rollback()方法。此外,如果我們不創建顯式事務,則記錄將分配給默認事務,通過調用DS.store對象本身的rollback()方法可以回滾該事務。

+2

謝謝!爲了完整起見,在Ember數據源中有一個很好的交易記錄。閱讀DS.Transaction – outside2344

+1

定義上方的註釋塊。事務註釋塊還說,我們可以在默認事務的情況下直接在存儲對象上運行「提交」或「回滾」。當我嘗試回滾時,出現以下錯誤: TypeError:Object <(DS.Store的子類):ember1117>沒有方法'rollback' 對此有何幫助? – inertia

5

默認事務的名稱被命名爲'defaultTransaction'。實際上,當Embers提交時,它使用這個默認事務。我無法直接在商店上直接使用回滾。

而不是使用store.rollback的,你應該是這樣的:

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

或者(如果你是在一個路由器事件管理器)

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

你也可以做一個rollback上如果它處於「isDirty」狀態,則自我模型。

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

export default Ember.ObjectController.extend({ 

actions: { 
    cancelEditModel: function(){ 

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

     this.transitionToRoute('...'); 

     return false; 
    } 
    } 
}); 
10

從灰燼數據2版本開始,沒有交易了,但你可以重置模式,以自己的最後的狀態保存之前的版本:

model.rollbackAttributes();