В чем разница между 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
атрибут к нему:выдаст ошибку что-то вроде:
Это потому, что вы просто не можете навязать
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
.источник