Чим відрізняється required
та ng-required
(перевірка форми)?
Чим відрізняється required
та ng-required
(перевірка форми)?
Відповіді:
Елементи форми AngularJS шукають required
атрибут для виконання функцій перевірки. ng-required
дозволяє встановити required
атрибут залежно від булевого тесту (наприклад, потрібне лише поле B - скажімо, номер учня - якщо поле A має певне значення - якщо ви обрали "student" як вибір )
Як приклад, <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.
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"
означає "isRequired (yourCondition)" і встановлює атрибут HTML динамічно для вас залежно від вашого стану.
Також відзначимо , що HTML - версія плутає , це НЕ можливо , щоб написати щось умовне , як required="true"
і required="false"
, тільки при наявності питань атрибутів (присутніх означає істинний)! Тут вам допоможе Angular ng-required
.