使用自定义指令,添加验证函数以验证整数输入
var INTEGER_REGEXP = /^\-?\d+$/;
app.directive('integer', function() {
return {
require: 'ngModel',
link: function(scope, elm, attrs, ctrl) {
ctrl.$validators.integer = function(modelValue, viewValue) {
if (ctrl.$isEmpty(modelValue)) {
// consider empty models to be valid
return true;
}
if (INTEGER_REGEXP.test(viewValue)) {
// it is valid
return true;
}
// it is invalid
return false;
};
}
};
});
$ validators对象中的每个函数都接收modelValue和viewValue。
modelValue和viewValue有什么区别?
答案 0 :(得分:4)
可以在ngModelController
中定义$formatter
和$parser
。 viewValue是呈现指令用于绘制自身的值,modelValue是在应用了ngModel的$parser
列表后存储在作用域中的值。如果更改范围中的值,ngModel将通过其$formatters
运行该值,然后由呈现指令将其作为viewValue读取。
viewValue通常是输入元素中显示的字符串,而modelValue是已解析为目标格式的值(例如,datepicker指令中的Date对象)