$ dirty vs $ invalid:有什么区别?

Mou*_*mit 8 angularjs

我是棱角分明的新手.我很困惑的$dirty$invalid,他们几乎听起来相同.

是什么区别$dirty,并$invalid在使用email ng-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>
Run Code Online (Sandbox Code Playgroud)

编辑1:

我很想知道我是否将ng-model名称更改emailemail8不再有效.

<input type="email" name="emaill" ng-model="email8" required>
Run Code Online (Sandbox Code Playgroud)

验证是否通过myForm未使用ng属性定义的html元素名称进行.它是如何工作的?

ng-show="myForm.email.$dirty && myForm.email.$invalid"
Run Code Online (Sandbox Code Playgroud)

Jay*_*ram 10

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

资源

同样在Angular Docs上

在问题中更新之后......正在对表单元素名称进行验证.跟踪表单中的所有ng-model以及它的工作方式.

更改ng-model名称也不会影响验证.我尝试了你的链接,它对我有用.这必须奏效.