Javascript angularjs表单验证中的指令顺序

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

我有一个用于验证字段的自定义指令,在同一字段上,我应用了ng模式来检查输入是否为数字。我面临的问题是定制指令总是在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;
                    }                  
                }
            }
        };
    })
期望行为- 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可重用,所以我不能这么做