最近我读了一些关于angularJS表单验证的教程,如下所示:
<p ng-show="userForm.email.$invalid && !userForm.email.$pristine"></p>
但我认为!$pristine
和$dirty
相同,我可以使用下面的那个吗?
<p ng-show="userForm.email.$invalid && userForm.email.$dirty"></p>
答案 0 :(得分:11)
我认为这两个属性之间存在细微差别,具体取决于您的用例。
<强> $使用setDirty(); 强> 将表单设置为脏状态。 可以调用此方法来添加&#39; ng-dirty&#39; class并将表单设置为脏状态(ng-dirty class)。此方法也将传播到父表单。
<强> $ setPristine(); 强> 将表单设置为其原始状态。 可以调用此方法来删除“脏”&#39; class并将表单设置为其原始状态(ng-pristine类)。此方法还将传播到此表单中包含的所有控件。 当我们想要重复使用时,将表单设置回原始状态通常很有用。保存或重置后的表单。
因此,您可以以不同的方式同时使用$ pristine和$ dirty。但是,您可以按照&#39; macrog&#39;提到的文档进行检查。在下面的帖子中。
答案 1 :(得分:6)
答案 2 :(得分:1)
$ pristine:如果用户尚未与表单交互
,则为TRUE$ dirty:如果用户已与表单进行过互动,则为TRUE。
本质上!$ pristine === $ dirty
但如果你同时使用它们,你可以使用他们受尊敬的css类。
根据这些AngularJS还为它们提供了相应的CSS类。我们可以将它们用于验证目的。
ng-pristine
ng-dirty
用法:
表格:myForm.$dirty
对于字段:myForm.fieldName.$dirty
在CSS中:
.ng-dirty{
background-color: yellow;
}