AngularJS指令验证器仅适用于ng-model更改,不适用于表单提交

时间:2019-01-02 16:10:53

标签: angularjs angularjs-directive

我有一个AngularJS指令,用于检查一组复选框的有效性,这些复选框需要选择一个或多个值。

validateServices 指令可以在我选择和取消选择某些选项时起作用,并且在模型为空时触发错误,但是如果我提交表单时未先触摸任何选项,那么它将被视为有效默认并且提交没有问题,即使它仍然为空。

到目前为止,这是我的代码:

<span used-services-input
      name="services"
      validate-services
      validate-on-change
      ng-model="person.usedservices" ng-required="required">
</span>

和指令:

angular.module('account-form-client-de')

.directive("usedServicesInput", function(){

return {
    restrict: 'A',
    require: 'ngModel',
    replace: true,
    templateUrl: 'template/directive/used-services-input.html',
    scope: {},
    controller: function($scope){

    (...)

    };  

}).directive('validateServices', function() {

return {
    restrict: 'A',
    require: '?ngModel',
    link: function(scope, elm, attr, ctrl) {

    if (!ctrl) return;

    ctrl.$validators.serviceEmpty = function(modelValue, viewValue) {
        return (viewValue != undefined) && 
        (viewValue.service1 || viewValue.service2 || viewValue.service3 || viewValue.service4);
    };
    }
};

});

有什么提示吗?

0 个答案:

没有答案