Angularjs中的自定义验证器 - $ validators未显示在链接函数中

时间:2017-11-25 16:01:26

标签: javascript angularjs validation angularjs-directive

我正在尝试创建一个自定义验证器,但我得到的是ctrl。$ validators未定义。以下是我的代码:

   link: function (scope, element, attrs, ctrl) {               
        ctrl.$validators.emptyCheckboxList = function (modelValue, viewValue) {
            if (!modelValue || modelValue.length === 0) {
                ctrl.$setValidity("emptyCheckboxList", false);
            }
            else {
                ctrl.$setValidity("emptyCheckboxList", true);
            }
        }
    }

此外,有没有办法覆盖所需的验证器?在AngularJS的文档中,他们提到要覆盖$ isEmpty,但它并没有与我合作。

由于

1 个答案:

答案 0 :(得分:0)

ngModelController $validators指令的控制者可以使用

ng-model道具。您似乎缺少在指令定义对象中要求ngModel

require: 'ngModel', //<-- this must be present here
link: function (scope, element, attrs, ctrl) {               
    ctrl.$validators.emptyCheckboxList = function (modelValue, viewValue) {
        if (!modelValue || modelValue.length === 0) {
            ctrl.$setValidity("emptyCheckboxList", false);
        }
        else {
            ctrl.$setValidity("emptyCheckboxList", true);
        }
    }
}

在指令DDO中添加require: 'ngModel'时。它在require函数的第4个参数内使用link指令控制器(本例ngModelController)。