angularjs - $ dirty与$ invalid : What is the difference?

标签 angularjs

我是新手。我对$dirty$invalid感到困惑,它们听起来几乎一样。
$dirty $invalid中使用的emailng-model有什么区别?以下是scenario。这是一个示例表W3Schools

<form ng-app="myApp" ng-controller="validateCtrl" name="myForm" novalidate>
    <p>
        Username:<br>
        <input type="text" name="user" ng-model="user" required>
        <span style="color: red" ng-show="myForm.user.$dirty && myForm.user.$invalid">
            <span ng-show="myForm.user.$error.required">Username is required.</span>
        </span>
    </p>
    <p>
        Email:<br>
        <input type="email" name="emaill" ng-model="email" required>
        <span style="color: red" ng-show="myForm.email.$dirty && myForm.email.$invalid">
            <span ng-show="myForm.email.$error.required">Email is required.</span>
            <span ng-show="myForm.email.$error.email">Invalid email address.</span>
        </span>
    </p>
    <p>
        <input type="submit" ng-click="Count()"
            ng-disabled="myForm.$invalid" title="Submit" value="Submit">
    </p>
</form>

编辑1:

我想知道是否将ng-model名称从email更改为email8,它不再起作用。
<input type="email" name="emaill" ng-model="email8" required>

验证是否通过myForm HTML元素名称(未使用ng属性定义)进行。它是如何工作的?
ng-show="myForm.email.$dirty && myForm.email.$invalid"

最佳答案

  • $dirty:如果用户已经与表单进行了交互,则为TRUE。
  • $invalid:如果至少一个包含表单和控件的表单无效,则为TRUE。

  • Source

    Also on Angular Docs

    在Question ...中更新后,正在对表单元素名称进行验证。跟踪表单中的所有ng模型,这就是它的工作方式。

    同样,更改ng-model名称不会对验证产生影响。我尝试了您的链接,它对我有用。那必须工作。

    关于angularjs - $ dirty与$ invalid : What is the difference?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33821928/

    相关文章:

    javascript - 在指令中使用 $compile 会触发 AngularJS 无限摘要错误

    javascript - 加入并缩小第三方 javascript 库

    AngularJS angular.equals 在 ng-show 上的工作方式不同

    javascript - 将数据从textarea追加到div

    javascript - 能够访问服务返回的对象,但访问其属性给出未定义

    AngularJS 两个指令与同一元素上的模板

    javascript - NG-如果不在 View 中应用

    javascript - Angular 模板中的 JST 是什么?

    javascript - 在Angular JS中导出Excel而不使用第三方库

    Android 应用停止使用最新版本的 PhoneGap Build