Javascript angularjs表单验证中的指令顺序
我有一个用于验证字段的自定义指令,在同一字段上,我应用了ng模式来检查输入是否为数字。我面临的问题是定制指令总是在ng模式之前运行Javascript angularjs表单验证中的指令顺序,javascript,angularjs,validation,Javascript,Angularjs,Validation,我有一个用于验证字段的自定义指令,在同一字段上,我应用了ng模式来检查输入是否为数字。我面临的问题是定制指令总是在ng模式之前运行 <input type=text ng-pattern="/^[1-9][0-9]*$/" customValidator> .directive('customValidator', function () { return { restrict: 'A', require: 'ngMo
<input type=text ng-pattern="/^[1-9][0-9]*$/" customValidator>
.directive('customValidator', function () {
return {
restrict: 'A',
require: 'ngModel',
link: function (scope, elem, attrs, ngModel) {
ngModel.$parsers.unshift(validate);
scope.$watch(ngModel.$viewValue, function () {
ngModel.$setViewValue(ngModel.$viewValue);
});
function validate(value) {
// validation code
if (validation) {
ngModel.$setValidity('custom', true);
return value;
}
else {
ngModel.$setValidity('custom', false);
return false;
}
}
}
};
})
期望行为-
ng模式->自定义验证程序
现在是-
customValidator->ng模式
我没有指定customValidator的任何优先级,也不想指定。
是否有任何方法可以强制此自定义验证器按照ng模式运行
<input type=text ng-pattern="/^[1-9][0-9]*$/" customValidator>
.directive('customValidator', function () {
return {
restrict: 'A',
require: 'ngModel',
link: function (scope, elem, attrs, ngModel) {
ngModel.$parsers.unshift(validate);
scope.$watch(ngModel.$viewValue, function () {
ngModel.$setViewValue(ngModel.$viewValue);
});
function validate(value) {
// validation code
if (validation) {
ngModel.$setValidity('custom', true);
return value;
}
else {
ngModel.$setValidity('custom', false);
return false;
}
}
}
};
})
.指令('customValidator',函数(){
返回{
限制:“A”,
要求:'ngModel',
链接:功能(范围、要素、属性、ngModel){
ngModel.$parsers.unshift(验证);
范围$watch(ngModel.$viewValue,函数(){
ngModel.$setViewValue(ngModel.$viewValue);
});
函数验证(值){
//验证码
如果(验证){
ngModel.$setValidity('custom',true);
返回值;
}
否则{
ngModel.$setValidity('custom',false);
返回false;
}
}
}
};
})
一种确定的方法是,您可以将模式代码测试放在validate()中首先执行。我不想混淆这些内容,并希望customvalidator可重用,因此不能这样做。一种确定的方法是,您可以将模式代码测试放在validate()中首先执行。我不想混淆这些内容,并希望customvalidator可重用,所以我不能这么做