В чем разница между required
и ng-required
(проверка формы)?
В чем разница между required
и ng-required
(проверка формы)?
Ответы:
Элементы формы AngularJS ищут required
атрибут для выполнения функций проверки. ng-required
позволяет вам установить required
атрибут в зависимости от логического теста (например, требуется только поле B - скажем, номер студента - если поле A имеет определенное значение - если вы выбрали «студент» в качестве выбора )
Как пример <input required>
и <input ng-required="true">
по сути одно и то же
Если вам интересно, почему это так (а не просто make <input required="true">
или <input required="false">
), это связано с ограничениями HTML - required
атрибут не имеет ассоциированного значения - его простое присутствие означает (согласно стандартам HTML), что элемент необходим - поэтому angular нужен способ установить / отменить требуемое значение ( required="false"
будет недействительным HTML)
<form method="post" action="/foo" novalidate>
. Опять же, это атрибут html5, не связанный с angularJS.
ng-required
указатель на переменную области / контроллера, Angular отслеживает ее изменения и соответственно устанавливает требуемый атрибут. Хотя в случае простого required
атрибута HTML у вас нет такой гибкости. Нет? И пока мы на одну тему, о чем ng-attr-required
? Это точно так же, как ng-required
?
Я хотел бы сделать дополнение для ответа Тиаго :
Предположим, вы скрываете элемент, используя 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
чтобы обойти эту потенциальную проблему.
Атрибут HTML required="required"
является заявление сообщая браузеру , что это поле , необходимое для того , чтобы формы , чтобы быть действительным. ( required="required"
это форма XHTML, просто использование required
эквивалентно)
ANGULAR атрибут ng-required="yourCondition"
означает «требуется копаться (yourCondition)» и устанавливает атрибут HTML динамически для вас в зависимости от вашего состояния.
Также отметим , что HTML - версия путает , это не возможно , чтобы написать нечто условное , как required="true"
и required="false"
, только при наличии вопросов атрибутов (присутствующих означает истинный)! Здесь Angular поможет вам ng-required
.