为什么必须使用ng-model指令绑定html输入字段以验证表单

时间:2016-03-29 13:52:22

标签: html angularjs forms

我有一个这样的表格

<form name="myForm">
    <input name="myEmail" type="email"/>

    {{myForm.$invalid}}
</form>

我需要将输入字段与ng-model绑定,以正确验证表单。为什么AngularJs无法像这样验证这个表单?

即使我将属性 myForm.myEmail。$ invalid 存在,如果我使用ng-model绑定输入。为什么会这样?

如果验证仅存在于ngModel指令中,为什么angularjs会将值 myForm。$ invalid 赋予 false ?更好的回应不会未定义

2 个答案:

答案 0 :(得分:2)

  

为什么AngularJs无法像这样验证此表单?

因为验证仅在ngModel指令的上下文中有意义,因为这实际上允许通过向父表单指令控制器注册相应的模型控制器(ngModelController)来实现验证功能,该控制器协调验证功能。

检查源代码以了解输入指令的实现方式以及它们对ngModel控制器的作用:https://github.com/angular/angular.js/blob/71cf28cf06295e0936f706c048bc07e6c963acc4/src/ng/directive/input.js#L1708

答案 1 :(得分:0)

因为angular会验证模型,而不是html。如果你没有绑定到模型,那么,就角度而言,没有什么可以验证的。