我正在尝试为输入字段构建一个指令,该指令使用从外部范围传递的自定义函数进行验证,例如:
HTML:
<input type="text" custom-validator="checkValidity"/>
控制器:
$scope.checkValidity = function(value){
return $scope.invalidWords.indexOf(value) === -1;
}
我为此创建了一个详细的 plunker:http ://plnkr.co/edit/H5A5O3?p=preview
验证工作,但它似乎打破了默认指令,在这种情况下,ng-disabled 不起作用,我无法访问 ng-model 中使用的变量!
这是我的指令:
app.directive('customValidator', function() {
return {
require: "ngModel"
, scope: { customValidator: '='}
, link: function postLink(scope, elm, attrs, ctrl) {
var validator = function(value) {
if(scope.customValidator && scope.customValidator(value)) {
ctrl.$setValidity('custom-validator', true);
return value;
}
ctrl.$setValidity('custom-validator', false);
return undefined;
}
ctrl.$parsers.unshift(validator);
ctrl.$formatters.unshift(validator);
}
}
});
我不知道出了什么问题,我真的需要帮助!
我应该继续使用 Angular 1.0.7