required
和ng-required
(表单验证)有什么区别?
3 回答
AngularJS 表单元素寻找required
属性来执行验证功能。ng-required
允许您required
根据布尔测试设置属性(例如,仅需要字段 B -例如,学生编号- 如果字段 A 具有特定值 -如果您选择“学生”作为选项)
举个例子,<input required>
和<input ng-required="true">
本质上是一样的
如果您想知道为什么会这样(而不仅仅是 make <input required="true">
or <input required="false">
),那是由于 HTML 的限制——该required
属性没有关联的值——它的存在意味着(根据 HTML 标准)该元素是必需的——所以角度需要一种方法来设置/取消设置所需的值(required="false"
将是无效的 HTML)
I would like to make a addon for tiago's answer:
Suppose you're hiding element using ng-show
and adding a required
attribute on the same:
<div ng-show="false">
<input required name="something" ng-model="name"/>
</div>
will throw an error something like :
An invalid form control with name='' is not focusable
This is because you just cannot impose required
validation on hidden
elements. Using ng-required
makes it easier to conditionally apply required validation which is just awesome!!
HTML 属性 是一条语句,required="required"
告诉浏览器该字段是必需的,以便表单有效。(required="required"
是XHTML的形式,只是使用required
是等价的)
Angular 属性 表示“ ng-required="yourCondition"
isRequired(yourCondition)”并根据您的条件为您动态设置 HTML 属性。
另请注意,HTML 版本令人困惑,不可能写出诸如required="true"
or之类的条件required="false"
,只有属性的存在才重要(present 表示 true)!这就是 Angular 帮助您解决问题的地方ng-required
。