Угловая директива не работает с типом ввода = число

У меня есть ввод в форме, которая выглядит так:

<input type="number" name="inputStageNumTeams" id="inputStageNumTeams"
 ng-model="s.numTeams" validate-greaterthan="2" required>

Однако по какой-то причине моя пользовательская директива validateGreaterthan работает неправильно. Если я изменю тип ввода на «текст», он работает как шарм! Я бы хотел, чтобы тип ввода был числовым, если это возможно.

Вот рассматриваемая директива:

app.directive('validateGreaterthan', function() {
return {
    require: 'ngModel',
    link: function(scope, elm, attrs, ctrl) {
        ctrl.$parsers.unshift(function(viewValue) {
            var number = attrs.validateGreaterthan;
            if (parseInt(viewValue) !== NaN) {
                scope.numberValid = ((viewValue && (parseInt(viewValue) >= number)) ? 'valid' : undefined);
            }

            if(scope.numberValid) {
                ctrl.$setValidity('number', true);
                return viewValue;
            } else {
                ctrl.$setValidity('number', false);
                return undefined;
            }

        });
    }
};
});

person sailboatlie    schedule 04.02.2013    source источник
comment
Чтобы было ясно, когда для типа ввода установлено числовое значение, директива никогда не будет выполняться, но если установлено текстовое, она будет выполняться при каждом изменении ввода (что я хочу).   -  person sailboatlie    schedule 04.02.2013


Ответы (2)


Почему вы не пытаетесь использовать уже существующую директиву [min="{string}"]?

http://docs.angularjs.org/api/ng.directive:input.number

person bbs    schedule 04.02.2013

Я почти уверен, что значение атрибута (attrs.validateGreaterthan) является строкой. Преобразуйте эту строку в целое число, чтобы убедиться, что вы сравниваете один и тот же тип.

person Laurent Zuijdwijk    schedule 04.02.2013
comment
Я не думаю, что это проблема. Я попытался зарегистрировать атрибут, и директива на самом деле никогда не вызывается, когда для ввода установлено число. - person sailboatlie; 04.02.2013