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

时间:2015-08-12 13:44:45

标签: angularjs forms validation

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

<p ng-show="userForm.email.$invalid && !userForm.email.$pristine"></p>

但我认为!$pristine$dirty相同,我可以使用下面的那个吗?

<p ng-show="userForm.email.$invalid && userForm.email.$dirty"></p>

3 个答案:

答案 0 :(得分:11)

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

<强> $使用setDirty(); 将表单设置为脏状态。 可以调用此方法来添加&#39; ng-dirty&#39; class并将表单设置为脏状态(ng-dirty class)。此方法也将传播到父表单。

<强> $ setPristine(); 将表单设置为其原始状态。 可以调用此方法来删除“脏”&#39; class并将表单设置为其原始状态(ng-pristine类)。此方法还将传播到此表单中包含的所有控件。 当我们想要重复使用时,将表单设置回原始状态通常很有用。保存或重置后的表单。

因此,您可以以不同的方式同时使用$ pristine和$ dirty。但是,您可以按照&#39; macrog&#39;提到的文档进行检查。在下面的帖子中。

答案 1 :(得分:6)

$原始 布尔 是 - 如果用户尚未与表单进行交互。

$脏 布尔 如果用户已与表单进行过互动,则为真。

您可以阅读所有here

答案 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;
}