Яка різниця між необхідними та ng-необхідними?


Відповіді:


421

Елементи форми 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)


Як я можу видалити необхідні ng відповідно? Тому що я без успіху спробував деякі методи jquery
themhz

28
Я не впевнений, що розумію питання. На практиці ви ніколи не використовуєте ng-Required = "true", а скоріше ng-Required = "scopedVariable" або ng-Requated "" ApplicationTruthTest () ", і значення змінна / функція визначає, чи потрібен елемент. Ніколи не використовуйте jquery, щоб возитися з цими речами у кутовому додатку, інакше у вас будуть непередбачувані результати!
Tiago Roldão

Варто зазначити, що в ng-обов’язковому повідомленні відображається повідомлення про помилку в стилі підказки за замовчуванням, яке говорить "це поле обов'язкове", що не завжди бажано. Я шукаю спосіб її вимкнути
Адам Спенс

2
Насправді це не так. Не впевнений, але я думаю, що ви маєте на увазі перевірку html5, яка автоматично попередньо формується більшістю сучасних браузерів. Якщо ви хочете , щоб взяти під свій контроль над цим (відключення , що браузер робить) , ви можете додати атрибут NOVALIDATE: <form method="post" action="/foo" novalidate>. Знову ж таки, це атрибут html5, не пов'язаний з angularJS.
Tiago Roldão

Я б очікував, що, коли ng-requiredвказує на змінну діапазону / контролера, Angular стежить за змінами та встановлює необхідний атрибут відповідно. У випадку простого requiredатрибута HTML у вас немає такої гнучкості. Немає? І поки ми на одній темі, а що ng-attr-required? Це точно так само, як ng-required?
AsGoodAsItGets

78

Я хотів би зробити доповнення до відповіді Тіаго :

Припустимо, ви приховуєте елемент, використовуючи ng-showта додаючи requiredатрибут до того ж:

<div ng-show="false">
    <input required name="something" ng-model="name"/>
</div>

видасть помилку на кшталт:

Недійсний елемент форми з ім'ям = '' не фокусується

Це тому, що ви просто не можете нав'язувати requiredвалідацію hiddenелементів. Використання ng-requiredполегшує умовне застосування необхідної перевірки, яка просто приголомшлива !!


13
Безумовно, хороша порада, і ви можете також використовувати ng-ifзамість того, щоб ng-show/ ng-hideубік перейти до потенційної проблеми.
jkjustjoshing

1
Це має бути прийнятою відповіддю. Якщо у вас є приховані елементи (ng-show = "false"), існує різниця між ng-Requated = "true" і просто "must", як описано в цій відповіді, і ми потрапили в гарячу воду через цю різницю.
Іван Кривяков

17

Атрибут HTML required="required" - це твердження, яке повідомляє браузеру, що це поле потрібно для того, щоб форма була дійсною. ( required="required"це форма XHTML, просто використання requiredеквівалентно)

Атрибут Angular ng-required="yourCondition" означає "isRequired (yourCondition)" і встановлює атрибут HTML динамічно для вас залежно від вашого стану.

Також відзначимо , що HTML - версія плутає , це НЕ можливо , щоб написати щось умовне , як required="true"і required="false", тільки при наявності питань атрибутів (присутніх означає істинний)! Тут вам допоможе Angular ng-required.


Так, на жаль, браузер не дозволяє ставити true / false, мабуть, вважається занадто технічним ...
Крістоф Руссі
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.