У меня есть форма myForm
с некоторыми полями ввода.
Что я пытаюсь реализовать: Каждое поле required
, только если хотя бы одно из других полей ввода не пусто.
Как мне это сделать: я устанавливаю ng-required="ctrl.isAtLeasOneFieldSet()"
для каждого поля.Эта функция проверяет, установлено ли какое-либо поле.Пока здесь это не работает.Если я устанавливаю поле, оно возвращает true
, а если поле не установлено, оно возвращает false
.Я также вижу это в «разработчике-консоли-инспектора» в Firefox, требуя изменения между истиной и ложью, когда я устанавливаю и сбрасываю значение в одном из полей ввода.
Что не работает: я хабефункция отправки в моем контроллере:
function submitForm(valid) {
if(!valid) {
return;
}
}
И в форме ng-submit="ctrl.submitForm(ctrl.myForm.$valid)"
.Даже если ng-required
установлено на true
, а поле ввода не установлено, valid
в submitForm
возвращает true
.Я использовал эту технику тысячу раз с ng-required="someValue"
, но не с таким функционалом, как сейчас, и он отлично работает.Я думаю, что есть проблема, когда я устанавливаю ng-required
с ctrl.isAtLeasOneFieldSet()
.Выглядит как форма не получит обновление до required
.
Вот симуляция:
index.html - форма
<form name="ctrl.myForm" class="form-horizontal" role="form" data-ng-submit="ctrl.submitForm(ctrl.myForm.$valid)" novalidate>
<input name="name"
data-ng-model="data.name"
data-ng-required="{{ctrl.isAtLeasOneFieldSet()}}"
/>
<input name="surname"
data-ng-model="data.surname"
data-ng-required="{{ctrl.isAtLeasOneFieldSet()}}"
/>
<!---->
</form>
index.js - submitForm ()
function submitForm(valid) {
if(!valid) {
return;
}
// Do something else
}