在棱镜中,$ pristine与$ dirty之间有什么区别?

hh5*_*188 6 forms validation angularjs

最近我读了一些关于angularJS表单验证的教程,如下所示:

<p ng-show="userForm.email.$invalid && !userForm.email.$pristine"></p>
Run Code Online (Sandbox Code Playgroud)

但我认为!$pristine并且$dirty是平等的,那么我可以使用下面的那个吗?

<p ng-show="userForm.email.$invalid && userForm.email.$dirty"></p>
Run Code Online (Sandbox Code Playgroud)

Rud*_*dra 13

我认为这两个属性之间存在细微差别,这取决于您的用例.

$使用setDirty(); 将表单设置为脏状态.可以调用此方法来添加'ng-dirty'类并将表单设置为脏状态(ng-dirty类).此方法也将传播到父表单.

$ setPristine(); 将表单设置为其原始状态.可以调用此方法来删除'ng-dirty'类并将表单设置为其原始状态(ng-pristine类).此方法还将传播到此表单中包含的所有控件.当我们想要在保存或重置表单后"重用"表单时,将表单设置回原始状态通常很有用.

因此,您可以以不同的方式同时使用$ pristine和$ dirty.但是,您可以在下面的帖子中查看"macrog"中提到的文档.


mac*_*rog 6

$ pristine boolean True - 如果用户尚未与表单进行交互.

$ dirty boolean True - 如果用户已经与表单进行了交互.

你可以在这里阅读

  • 那么使用其中任何一个就足够了吗? (2认同)
  • 基本上,ng-dirty和ng-pristine就像是同一个故事的两面. (2认同)