我想在Angular 1.3+中创建一对自定义字数统计验证器,我可以传递最小值/最大值,例如如下所示:
<input type=text min-word-count="10" max-word-count="200">
我从official documentation on the subject收集一个类似于以下整数示例的自定义指令应该是合适的:
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;
};
}
};
});
但是,我不确定如何自定义此示例以便动态传递自定义值。
将值传递给上述自定义验证指令的最佳做法是什么?
答案 0 :(得分:1)
app.directive('maxWordCount', function() {
return {
require: 'ngModel',
link: function(scope, elm, attrs, ctrl) {
//For DOM -> model validation
var maxLimit = attrs.maxWordCount;
ctrl.$parsers.unshift(function(value){
var valid = true;
if(value){
valid = value.split(' ').length <= maxLimit;
}
ctrl.$setValidity('maxWordCount', valid);
return valid ? value : undefined;
});
//For model -> DOM validation
ctrl.$formatters.unshift(function(value) {
var valid = true;
if(value){
valid = value.split(' ').length <= maxLimit;
}
ctrl.$setValidity('maxWordCount',valid);
return value;
});
}
};
});