Чим відрізняється 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.