AngularJS - 在不删除验证错误的情况下设置pristine形式

时间:2014-07-01 16:49:03

标签: javascript forms angularjs validation dirty-data

我们有一个自动保存和一个特定表单的显式保存(它是一个长形式,我们不希望用户丢失数据)。对于显式保存,无效数据将阻止保存发生,并且不会将XHR发送回服务器。但是,对于自动保存,我们希望保存数据(如果可能),而不管前端验证。

我们需要做的是,如果在后端保存成功,前端应该将表单标记为不再脏。但是......这是贴纸 - 它应该从表单中删除任何验证错误/错误消息。

从我所看到的(或者至少从我理解的内容)开始,。$ setPristine()将使表单变脏,但问题是,它也会删除验证错误。

有没有办法在不删除验证错误的情况下解压缩表单,以便在已经执行保存时自动保存不会运行,但是这样用户仍然可以获得哪些字段无效的反馈,以便它们可以可以解决问题吗?

谢谢!

1 个答案:

答案 0 :(得分:4)

表单的$pristine / $dirty个状态未与$valid / $invalid个状态相关联。 不应删除您的错误消息(除非您在显示/隐藏消息的情况下使用$pristine / $dirty。)


因此,您可以在自动保存功能中调用FormController的$setPristine()方法,该方法将“弄脏”表单,但不会影响验证和错误消息。


另请参阅此 short demo

<子> 例如: -
*在上面的小提琴中,在一个字段中输入内容(因此它变为有效并且表单变脏) *启用Save按钮 *按Save按钮将表单的状态设置为$pristine,因此按钮被禁用(这模拟了自动保存)。
*虽然错误消息仍然可见(并且表单的有效性状态不会改变)。