Angularjs - Обязательное поле проверки ui-select - PullRequest
0 голосов
/ 03 июня 2019

Используя AngularJs 1.3.4, я пытаюсь проверить элемент управления ui-select.Этот элемент управления находится внутри ng-repeat.Ниже мой ui-select

 <ui-select tagging tagging-label="new tag" multiple ng-model="data.value" theme="bootstrap" name="value">
              <ui-select-match placeholder="Enter values..">{{$item}}</ui-select-match>
              <ui-select-choices repeat="tags in vm.availableTags | filter:$select.search">
                {{tags}}
              </ui-select-choices>
            </ui-select>

Я попытался добавить ниже, но это не сработало

required and ng-required="true" 

После прочтения нескольких постов я добавил скрытый ввод, как показано ниже, с тем же именем, что и ui-выберите:

<input type="hidden" ng-model="data.value" name="value_{{$index}}" class="form-control" required />

Приведенный выше код работает, но проблема в том, что когда вы что-то набираете в пользовательском интерфейсе, а затем удаляете тот, который вы выбрали / набрали, он проходит проверку и не выдает ошибку.В идеале он должен возвращать isValid для false, но возвращает true.

Я создал демо для моей проблемы здесь: http://jsfiddle.net/zfLy86bt/2/

Может кто-нибудь помочь мне решить эту проблему?

1 Ответ

1 голос
/ 04 июня 2019

это был интересный вопрос, проблема в том, что когда вы изначально загружаете данные в поле, он создает и массив в свойстве value. Когда вы удаляете эту запись или тэг, она оставляет пустой массив, и этого, по-видимому, достаточно для выполнения требуемой проверки.

Я добавил функцию контроллера для удаления свойства, когда массив значений пуст:

vm.clearData = function(data) {
    if (data.value && data.value.length == 0) delete data['value'];
}

Затем я использовал ng-change, чтобы вызвать его из элемента ui-select, и это, похоже, сработало, скрипка здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...