required和ng-required有什么区别?


Answers:


420

AngularJS表单元素寻找required执行验证功能的属性。ng-required允许您required根据布尔测试设置属性(例如,仅要求字段B- 例如,学生编号 -如果字段A具有特定值- 如果您选择“学生”作为选择

作为一个例子,<input required><input ng-required="true">在本质上是一样的东西

如果您想知道为什么这样做(而不仅是make <input required="true"><input required="false">),那是由于HTML的局限性-该required属性没有关联的值-根据HTML标准,它仅仅是存在的意思(根据HTML标准)-因此,角度需要一种设置/取消所需值的方法(required="false"将是无效的HTML)


如何分别删除ng-required?因为我尝试了一些jquery方法而没有成功
他们

28
我不确定我是否理解这个问题。实际上,您永远不会使用ng-required =“ true”,而是使用ng-required =“ scopedVariable”或ng-required =“ scopeTruthTest()”,并且变量/函数确定是否需要该元素。切勿在jQuery应用中使用jquery弄乱这些东西,否则您将得到不可预测的结果!
TiagoRoldão13年

值得一提的是,ng-required会显示默认的工具提示样式错误消息,提示“此字段是必需的”,但并非总是如此。我正在寻找一种方法来关闭它
亚当斯彭斯

2
确实不是。不确定,但是我认为您指的是html5验证,该验证是大多数现代浏览器自动执行的。如果你想利用控制此(禁用浏览器做什么),你可以添加属性的novalidate: <form method="post" action="/foo" novalidate>。同样,这是html5属性,与angularJS不相关。
TiagoRoldão14年

我希望当ng-required指向范围/控制器变量时,Angular会监视它的更改并相应地设置所需的属性。在使用简单HTML required属性的情况下,您没有这种灵活性。没有?当我们处于同一主题时,那又如何ng-attr-required呢?完全一样ng-required吗?
AsGoodAsItGets'Apr

78

我想为tiago的答案做一个补充

假设您正在使用ng-showrequired在同一元素上添加属性来隐藏元素:

<div ng-show="false">
    <input required name="something" ng-model="name"/>
</div>

将引发类似以下错误:

名称=''的无效表单控件不可聚焦

这是因为您不能对元素进行required验证hidden。使用ng-required可以更轻松地有条件地应用所需的验证,真是太棒了!


13
绝对是一个很好的技巧,您也可以使用/ ng-if代替ng-show/ ng-hide来避免该潜在问题。
jkjustjoshing

1
这应该是公认的答案。如果您有隐藏的元素(ng-show =“ false”),则ng-required =“ true”与本回答中所描述的'required'之间有区别,由于这种区别,我们陷入了困境。
伊万·克里瓦雅科夫

17

HTML属性 required="required"是告诉这个字段以所需的形式是有效的浏览器的声明。(required="required"是XHTML表单,仅使用required等效)

角属性 ng-required="yourCondition"手段“isRequired(yourCondition)”,并设置HTML属性动态您根据您的病情进行。

还要注意的是HTML版本是混乱,这是不是可以写东西像条件required="true"或者required="false",只有属性问题的存在(目前的手段真)!这是Angular帮助您解决问题的地方ng-required


是的,很遗憾,浏览器不允许输入true / false,可能被认为过于技术性……
Christophe Roussy
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.