В чем разница между обязательным и обязательным нг?

264

В чем разница между required и ng-required (проверка формы)?

Теги:
required

3 ответа

401
Лучший ответ

Элементы формы AngularJS ищут атрибут required для выполнения функций проверки. ng-required позволяет вам установить атрибут required в зависимости от логического теста (например, требуется только поле B - скажем, номер студента - если поле A имеет определенное значение - если вы выбрали "ученик" в качестве выбора )

В качестве примера, <input required> и <input ng-required="true">, по существу, одно и то же

Если вам интересно почему, то это (а не просто сделать <input required="true"> или <input required="false">), это связано с ограничениями HTML - атрибут required не имеет связанное значение - это простое средство присутствия (в соответствии со стандартами HTML), которое требуется для этого элемента - поэтому angular нужен способ установить/удалить требуемое значение (required="false" будет недействительным HTML)

  • 0
    Как я могу удалить ng-required соответственно? Потому что я пробовал некоторые методы jquery безуспешно
  • 28
    Я не уверен, что понимаю вопрос. На практике вы никогда не используете ng-required = "true", а скорее ng-required = "scopedVariable" или ng-required = "scopeTruthTest ()", а также значение переменная / функция определяет, требуется ли элемент. Никогда не используйте jquery, чтобы связываться с этими вещами в угловых приложениях, иначе вы получите непредсказуемые результаты!
Показать ещё 3 комментария
79

Я хотел бы добавить аддон для ответ tiago:

Предположим, что вы скрываете элемент с помощью ng-show и добавляете атрибут required на то же:

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

выдает ошибку:

Недопустимое управление формой с помощью name= '' не фокусируется

Это потому, что вы просто не можете наложить required валидацию на элементы hidden. Использование ng-required упрощает условно применять требуемую проверку, которая просто потрясающая!!

  • 11
    Определенно хороший совет, и вы также можете использовать ng-if вместо ng-show / ng-hide чтобы обойти эту потенциальную проблему.
  • 1
    Это должен быть принятый ответ. Если у вас есть скрытые элементы (ng-show = "false"), существует разница между ng-required = "true" и просто "required", как описано в этом ответе, и мы попали в горячую воду из-за этой разницы.
15

Атрибут HTML required="required" - это оператор, указывающий браузеру, что это поле необходимо для того, чтобы форма была действительной. (required="required" является формой XHTML, просто используя required эквивалентно)

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

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

  • 0
    Да, к сожалению, браузер не позволяет поставить true / false, вероятно, считается слишком техническим ...

Ещё вопросы

Сообщество Overcoder
Наверх
Меню