我正在使用帶有Ember數據的Ember App Kit創建應用程序。我有一個具有創建和編輯表單的項目資源。出於各種設計原因,我不想讓模型更新或創建,直到用戶點擊保存按鈕。我不確定在Ember中執行此操作的最佳設計模式,因爲默認情況下是將表單字段綁定到更新數據輸入的模型。Ember - 保存的更新模型不是用戶類型
回答
您需要在控制器上創建一個臨時屬性。
App.FooController = Em.ObjectController.extend({
userName: '',
createData: function() {
this.get('store').createRecord({
name: this.get('userName')
}).save();
this.set('userName', '');
},
saveData: function() {
this.set('model.name', this.get('userName'));
this.set('userName', '');
}
});
綁定到userName
屬性爲文本字段(或其他),然後,當用戶點擊保存按鈕上傳輸的值。
這很有道理!由於編輯和創建控制器將具有相同的字段,並且表單使用了部分內容,因此您建議使用要在控制器上設置的屬性創建混合內容?感謝解決方案,簡單但會工作得很好。 – tmartineau
我通常只在一個地方編輯數據,所以我從來沒有爲此創建混音。但是,如果我要在多個位置編輯同一類型的對象,我當然會嘗試將其分解爲某種可重用的功能。如果模板總是一樣的話,我會選擇一個視圖或組件。如果模板發生變化,mixin會運行良好。 – GJK
您是否知道Ember中的最佳設計模式,用於實現編輯和創建資源,因爲它們基本上具有相同的功能,但結果稍有不同?也許已經有一些文獻可以指向我了(我在試圖進行快速搜索之前就已經開始了)。感謝您花時間回覆此問題,這真的很有幫助。 – tmartineau
或者,您可以創建一個Ember.Object
,將模型屬性複製到其中,然後將窗體綁定到該對象。然後在保存時將屬性複製回模型。你可以這樣保存一些代碼。
對,如此相同的主體,但使用Ember對象,而不是直接在控制器上將它們作爲屬性。 – tmartineau
是的,然後你有一個可重用的函數來從模型屬性創建對象。 – buuda
- 1. 保存而不是更新的模型
- 2. 正在更新用戶模型和保存新模型 - Django
- 3. Ember模型未更新
- 4. counter_cache不更新的模型保存後
- 5. Ember在保存記錄後更新父路線的模型
- 6. 保存模型是級聯更新,當我只想要更新主模型
- 7. 更新FK模型的DateField後保存
- 8. 保存更新的模型到mongodb
- 9. 更新模型更新不及時更改的數據類型
- 10. Ember選擇更新模型onChange
- 11. Ember更新模型後行動
- 12. 保存到Ember服務器時更改模型的JSON根
- 13. Ember-Data模型應該保存非Ember-Data-Models的ID - 如何?
- 14. Ember - 如何在保存/更新記錄後重新加載路徑模型
- 15. Magento模型保存方法更新記錄,而不是插入
- 16. 迴環更新模型後保存
- 17. 更新/保存在連接模型
- 18. 更新屬性後保存模型
- 19. Django保存或更新模型
- 20. Grails在保存前更新模型
- 21. 的Django模型保存方法,更新M2M不起作用
- 22. BackboneJS使用不同的URL保存模型(創建/更新)
- 23. 餘燼 - 未能保存新模型
- 24. Django的保存模型匿名用戶
- 25. TryUpdateModel - 類型的模型無法更新
- 26. yii更新一個屬性,而不使用模型保存
- 27. 使用EF4代碼更新模型時不會保存關係
- 28. Ember(data)linkTo不通過模型,只取得新模型
- 29. 更新元件不保留其類型
- 30. Ember:從模型
事實上,如果使用Ember Data,我發現了另一個解決方案。我瞭解到模型上有一個「回滾」方法,可以回滾未保存的模型數據。使用模型上的'isDirty'屬性,您可以檢查'willTransition'來查看模型是否有變化,向用戶確認他們想要放棄這些更改,如果是,則使用內置方法回滾它們。非常乾淨,並且需要大量代碼。 – tmartineau