В чем разница между required
и ng-required
(проверка формы)?
В чем разница между required и ng-required?
Ответы (3)
Элементы формы AngularJS ищут атрибут required
для выполнения функций проверки. ng-required
позволяет вам установить атрибут required
в зависимости от логического теста (например, требуется только поле B - скажем, номер студента - если поле A имеет определенное значение - если вы выбрали "студент" на выбор)
Например, <input required>
и <input ng-required="true">
по сути одно и то же.
Если вам интересно, почему это так (а не просто сделать <input required="true">
или <input required="false">
), это связано с ограничениями HTML — атрибут required
не имеет связанного значения — его простое присутствие означает (как в соответствии со стандартами HTML), что элемент требуется, поэтому angular нужен способ установить/отменить требуемое значение (required="false"
будет недопустимым HTML)
<form method="post" action="/foo" novalidate>
. Опять же, это атрибут html5, не связанный с angularJS.
- person Tiago Roldão; 15.03.2014
ng-required
указывает на переменную области/контроллера, Angular отслеживает ее изменения и соответственно устанавливает требуемый атрибут. В то время как в случае с простым атрибутом HTML required
у вас нет такой гибкости. Нет? И раз уж мы затронули одну и ту же тему, что насчет ng-attr-required
? Это точно так же, как ng-required
?
- person AsGoodAsItGets; 05.04.2017
Я хотел бы сделать дополнение для ответа Тиаго:
Предположим, вы скрываете элемент с помощью ng-show
и добавляете к нему атрибут required
:
<div ng-show="false">
<input required name="something" ng-model="name"/>
</div>
выдаст ошибку что-то вроде:
Недопустимый элемент управления формы с именем = '' не может быть сфокусирован
Это потому, что вы просто не можете наложить required
проверку на hidden
элементов. Использование ng-required
упрощает условное применение необходимой проверки, что просто потрясающе!
ng-if
вместо ng-show
/ng-hide
, чтобы обойти эту потенциальную проблему.
- person jkjustjoshing; 30.06.2015
HTML-атрибут required="required"
— это оператор, сообщающий браузеру, что это поле необходимо для того, чтобы форма была корректной. (required="required"
— это форма XHTML, просто использование required
эквивалентно)
Атрибут Angular ng-required="yourCondition"
означает 'isRequired(yourCondition)' и устанавливает атрибут HTML динамически для вас в зависимости от вашего состояния.
Также обратите внимание, что версия HTML сбивает с толку, не возможно написать что-то условное, например required="true"
или required="false"
, имеет значение только наличие атрибута (настоящее означает истинное)! В этом вам поможет Angular с ng-required
.