1

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

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

从我所看到的(或至少从我的理解)来看, .$setPristine() 将清除表单,但它也会有问题地消除验证错误。

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

谢谢!

4

1 回答 1

4

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


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


另请参阅这个简短的演示

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

于 2014-07-01T17:58:18.833 回答