由于IE8的支持,我只能使用Angular 1.2.x,我正在尝试实现一个自定义指令,该指令显示一个表单字段,并为使用自定义验证器验证的字段生成错误消息。
这是我的验证员:
angular.module("validator", [])
.directive('myValidator', function(){
return {
restrict: 'A',
require: 'ngModel',
link: function(scope, element, attr, ctrl) {
function myValidator(ngModelValue) {
switch(attr.myValidator){
case 'twitter':
if (/^@(\w{1,15})$/.test(ngModelValue)) {
ctrl.$setValidity('twitterValidate', true);
} else {
ctrl.$setValidity('twitterValidate', false);
}
break;
}
// return ngModelValue displayed to the user
return ngModelValue;
}
// add parser to existing parsers
ctrl.$parsers.push(myValidator);
}
};
});
和自定义指令:
angular.module('form-fields', [])
.directive('TwitterField', function(){
return {
restrict: 'AEC',
scope: {
twitter: '=',
isRequired: '=required'
},
templateUrl: '/path/to/template.html',
}
})
和模板:
<label>Twitter</label>
<input type="text" id="twitter" ng-model="twitter" my-validator="twitter" ng-required="isRequired">
一切正常,我可以在<form>
中使用指令,并且它们可以正确验证。我可以访问$ scope.form.twitter并查看错误,以便我可以在周围的表单中生成错误消息,但我希望在指令中。这可能吗?