myForm. $ valid возвращает true, даже если требуемая область пуста - PullRequest
0 голосов
/ 06 декабря 2018

У меня есть форма 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
}

1 Ответ

0 голосов
/ 06 декабря 2018

Я нашел проблему в этом случае.Хотя я не уверен, в чем разница.

правильно: data-ng-required="ctrl.isAtLeasOneFieldSet()"

неправильно: data-ng-required="{{ctrl.isAtLeasOneFieldSet()}}"

Если кто-то знает, почему он так себя ведет и что именно происходитв каждом случае, пожалуйста, напишите ответ здесь.

...