2014-02-07 29 views
0

我與編輯的地方pplaying像http://emberjs.com/guides/getting-started/toggle-todo-editing-state/emberjs:如何恢復通過輸入領域取得的模型屬性改變

描述,我想出了一個解決方法是編輯之前保存了該模型的價值並且在編輯完成後,決定是否按下取消按鈕來恢復它。

這裏是jsbin http://emberjs.jsbin.com/hesib/1/edit我恐怕就不是那麼好習慣。

你說什麼?

+0

你可以回滾的變化,調用this.rollback()時保存=假。或者爲取消創建不同的操作,然後在那裏調用回滾。 – fanta

+0

不錯!但是這將重置所有模型,而不僅僅是目標屬性,並因此限制每次編輯完成時的保存。單個「保存」按鈕會如何保存整個模型? – lessless

回答

1

我不太清楚你想達到的目標。

如果你想在一次恢復整個模型到最後提交的狀態,你應該this.rollback()去。但請注意,this.rollback正通過this.save()恢復到上次提交狀態,無論是否保存爲false。有關this.rollback的預期行爲的詳細信息,請參閱:http://discuss.emberjs.com/t/expected-behaviour-of-rollback-after-save-attempt-returns-422-ember-data-1-0/2513

如果您希望恢復一個屬性的功能,我建議不要更改原始模型,而是使用視圖:創建一個存儲模型值的臨時對象,實現那裏編輯和恢復這個臨時模型的功能,如果應該保存更改推送更新值到控制器,那裏更新模型並保存它。

如果你喜歡保存模型並繼續編輯,你可以只使用保存,但保持你的視圖編輯模式。

+0

你的意思是一個組件,對吧?由於在視圖afaik中封裝一個變量是不可能的。 – lessless