2013-01-04 63 views
2

我正在努力理解關於該模型生命週期的一切。我創建了this jsfiddle來說明我的問題。當在列表中的一個條目點擊,編輯的值,然後單擊版本鏈接返回到列表中,我得到以下錯誤:Ember模型生命週期,並恢復到原始狀態

Uncaught Error: Attempted to handle event loadedData on while in state rootState.loaded.updated.uncommitted. Called with {}

是什麼原因造成的?我知道對象狀態現在很髒,但是如何在打開列表時強制刷新所有對象?

另外,如果表單沒有保存,如何放棄對屬性的所有更改的任何建議?我在考慮克隆對象,在編輯表單中使用該克隆,並在保存時將其與原始文件合併。沒有我想象的那麼容易。

使用最新的餘燼和餘燼數據。

回答

3

經過與@tchak的快速討論後,解決方案可以覆蓋Version路由的退出函數,並回滾當前模型。

App.VersionRoute = Ember.Route.extend({ 
    exit: function() { 
    var controller = this.controllerFor(this.templateName), 
     content = controller.get('content'); 

    if (content.get('isDirty')) { 
     content.get('transaction').rollback(); 
    } 
    this._super(); 
    } 
}); 
+0

似乎它的工作!我明白了,我有相當多的東西要學習燼。在我接受答案之前會做更多的測試:) 編輯:如果我直接通過url返回列表,而不僅僅是鏈接,則退出方法甚至可以運行。真棒。 – rallrall

+1

很高興知道它的工作:)。請注意,如果刷新/ versions/1頁面,您將看到一個空白頁面。在頭痛之前,將Fixtures中的id改爲String,而不是整數。 –