2014-07-01 37 views
1

我們爲特定表單(它是一個長表單,我們不希望用戶丟失數據)具有自動保存和顯式保存。對於明確的保存,無效數據將阻止保存的發生,並且XHR不會被髮送回服務器。但是,對於自動保存,我們希望保存數據(如果可能),無論前端驗證如何。AngularJS - 在不刪除驗證錯誤的情況下設置表單原始碼

我們需要發生的是,如果在後端保存成功,前端應該將表單標記爲不再髒。但是...和這裏的貼紙 - 它應該而不是從窗體中刪除任何驗證錯誤/錯誤消息。

從我看到的(或者至少從我理解的),$ setPristine()將不會弄髒窗體,但它會有問題地刪除驗證錯誤。

是否有一種方法可以在不刪除驗證錯誤的情況下對錶單進行骯髒處理,以便自動保存在已經執行保存時不會運行,但是爲了讓用戶仍然能夠反饋哪些字段無效,他們可以解決這些問題?

謝謝!

+0

我建議不要使用'$ pristine',因爲它已經有了一個含義(與自動保存無關)。您可以創建自己的屬性,'$ pristine'可以在一天內使用,以向用戶反饋他們觸摸了哪些字段。 – maaartinus

回答

4

表單的$pristine/$dirty狀態未連接到$valid/$invalid狀態。 不應刪除您的錯誤消息(除非在顯示/隱藏消息的情況下使用$pristine/$dirty)。


所以,你可以調用的FormController的$setPristine()方法在你的自動保存功能,從而將「未髒」的形式,但不會影響驗證和錯誤消息。


還參見本short demo

例如爲:
*在上面的小提琴,在一個字段中輸入的東西(所以它成爲有效和形式變髒)。
* Save按鈕啓用。
*按Save按鈕將表單的狀態設置爲$pristine,因此該按鈕被禁用(模擬自動保存)。
*雖然錯誤消息仍然可見(並且表單的有效性狀態不會更改)。

+2

?!?什麼是再次downvote?!? (加油的人 - 至少在後面留言...) – gkalpak

+0

你絕對正確。誰低估了你,沒有做好。原始狀態和有效狀態沒有任何關聯,你的帖子應該被標記爲接受的答案。 – zszep

+0

是的,你是正確的ExpertSystem。另一位開發人員對此表單附加了另一個指令,我很困惑。謝謝你的小提琴。我upvoted你抵消downvote :) –

相關問題