我的输入形式如下:
<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;
}
});
}
};
});
答案 0 :(得分:3)
为什么不尝试使用现有的[min =“{string}”]指令?
答案 1 :(得分:0)
我很确定属性值(attrs.validateGreaterthan)是一个字符串。将该字符串转换为整数,以确保您比较相同的类型。