我很努力去理解將在以下場景中使用的工作流程:當處於錯誤狀態時,您可以使用Ember Data Models做什麼?
用戶創建一個模型,我們稱之爲Product。我們給他們提供一個表單來填寫。保存錯誤除了驗證之外的其他原因(超時,拒絕訪問等等)。在Ember中,這會使模型進入錯誤狀態。從UI的角度來看,我想要做的就是在屏幕上放置一條消息(簡單),並允許用戶再次嘗試(顯然不是那麼容易)。
我已經看到它寫了很多次不重用一個事務。我明白這一點的邏輯。對於新產品,我簡單地創建另一個新產品,合併來自原始產品(屬性,關係)的數據,並用新產品替換我的控制器的內容。這並不困難,似乎很好地工作,雖然可能(有希望)更好的方式。
但是,當我編輯產品時,我遇到了一個嚴重問題,上述解決方案無法正常工作。產品模型現在處於錯誤狀態,我無法找到任何方式獲取不同於此產品的副本,該副本不處於相同狀態。
我弄不清楚是什麼,我可以做這個模型,一旦它達到錯誤狀態。我嘗試了以下方法:
回滾:這不起作用。您無法在錯誤狀態下回滾事務。
重新加載:同上。不允許在錯誤狀態下重新加載記錄。
抓取記錄的新副本:所以我嘗試使用與現有記錄相同的ID的App.Product.find(id)。它只是給我一個現有記錄的副本,處於錯誤狀態。
我希望我在這裏錯過了一些相當基本的東西。是否有可能將錯誤狀態(或無效狀態)記錄在一個錯誤狀態?
如果有一種簡單的方法來改變這些模型的狀態,我們是否應該爲進一步的提交嘗試創建一個新的事務?
看看這個線程和這種模式。 http://stackoverflow.com/a/16471974/1330615 – danielgatis
看看這個線程和這種模式。 http://stackoverflow.com/a/16471974/1330615 – danielgatis
@danielgatis我看看你的要點,這是與從您發佈的鏈接... 我看到爲什麼你的工作模式爲新的記錄,因爲你只是摧毀失敗,並創建一個新的,當它不驗證。這不會導致您丟失用戶輸入的數據嗎?這也不適用於編輯現有記錄。 最後是否需要在這個問題上發表您的評論三次? –