Как проверить неформальные элементы в Angular?

Я использую angular-bootstrap-ui-dropdown в форме. Я хотел запустить некоторую проверку этого элемента. Возможно ли это с Angular Validator?

В настоящее время код выглядит следующим образом, все они находятся в элементе формы, и мне удалось проверить другие стандартные элементы формы (например, ввод и т. д.).

<div class="btn-group" uib-keyboard-nav uib-dropdown>
    <button id="salutation-button" type="button" class="btn btn-primary" uib-dropdown-toggle>
        <span class="dp-caption">{{passenger.salutation || 'Salutation'}}</span> <span
            class="fa fa-angle-down"></span>
    </button>
    <ul class="uib-dropdown-menu" role="menu" aria-labelledby="single-button">
        <li ng-repeat="salutation in salutationList" ng-click="setSalutation(salutation)"
            role="menuitem"><a href="#">{{salutation}}</a></li>
    </ul>
</div>

Можно ли проверить, выбрано ли значение в этом раскрывающемся списке?


person nipuna777    schedule 04.12.2015    source источник
comment
вы можете использовать встроенные методы раскрывающихся списков для проверки.   -  person ngLover    schedule 04.12.2015
comment
@ngLover Документация здесь, похоже, не объясняет, как я буду действовать делая это. Кроме того, применяемые классы в раскрывающемся списке, похоже, не меняются в зависимости от выбора.   -  person nipuna777    schedule 04.12.2015


Ответы (1)


Вы можете добавить $validators в ngModelController (при условии, что вы с помощью ngModel). Например, в вашей директиве вы можете потребовать это и добавить нужные вам валидаторы:

переменная с одним простым списком разрешенных имен:

var allowedNames = [...array with names...]

... и это может быть частью директивы:

    ...
    require: '?ngModel',
    link: function (scope, iElement, iAttribute, ngModel) {
        var $validators = { // object with one or more validators
            isNameAllowed: function (modelValue, viewValue) {
                var value = modelValue || viewValue;

                if (!value || allowedNames.indexOf(value) > -1) {
                    return true;
                } else {
                    return false;
                }
            }
        };

        ngModel.$validators = angular.extend({}, ngModel.$validators, $validators);
        ...
    }
    ...

В этом примере я добавил простой валидатор с именем «isNameAllowed», который проверяет, находится ли значение в модели в списке разрешенных имен.

person Rumoroso    schedule 05.12.2015