【问题标题】:What's the differences between !$pristine vs $dirty in angularjsangularjs 中的 !$pristine 与 $dirty 有什么区别
【发布时间】:2015-08-12 13:44:44
【问题描述】:

最近我读了一些关于 angularJS 表单验证的教程,像这样:

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

但我认为!$pristine$dirty 是相等的,所以我可以使用下面的吗?

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

【问题讨论】:

  • 是的,你可以使用任何一个,就像你说它们都是布尔值所以!$pristine === $dirty。我也更喜欢底部的,我宁愿测试$dirty

标签: angularjs forms validation


【解决方案1】:

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

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

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

因此,您可以以不同的方式同时使用 $pristine 和 $dirty。不过,您可以检查下面帖子中“macrog”提到的文档。

【讨论】:

    【解决方案2】:

    $原始 布尔值 True - 如果用户尚未与表单交互。

    $脏 布尔值 True - 如果用户已经与表单进行了交互。

    你可以阅读所有here

    【讨论】:

    • 基本上 ng-dirty 和 ng-pristine 就像是同一个故事的两个方面。
    【解决方案3】:

    $pristine:如果用户尚未与表单交互,则为 TRUE

    $dirty:如果用户已经与表单交互,则为 TRUE。

    本质上 !$pristine === $dirty

    但是如果你同时使用它们,你可以使用它们受人尊敬的 css 类

    AngularJS也按照这些为他们提供了相应的CSS类。我们可以将它们用于验证目的。

    ng-pristine
    ng-dirty
    

    用法:

    表格:myForm.$dirty

    对于字段:myForm.fieldName.$dirty

    在 CSS 中:

    .ng-dirty{
     background-color: yellow;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-01
      • 2013-06-22
      • 2013-07-07
      相关资源
      最近更新 更多