Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 什么是ngModel.$validators管道?_Javascript_Angularjs_Validation - Fatal编程技术网

Javascript 什么是ngModel.$validators管道?

Javascript 什么是ngModel.$validators管道?,javascript,angularjs,validation,Javascript,Angularjs,Validation,在Angular.js中对自定义客户端验证进行一些基础研究时,我阅读了文档,发现了以下隐晦的一行: $setValidity(validationErrorKey,isValid); 更改有效性状态,并通知表单 可以在$parsers/$formatters中调用此方法但是,如果可能,请使用ngModel.$validators管道,该管道设计用于自动调用此方法。 几个小时后,我在谷歌(以及StackOverflow!)上进行了多次搜索,但没有找到任何关于这个ngModel.$validator

在Angular.js中对自定义客户端验证进行一些基础研究时,我阅读了文档,发现了以下隐晦的一行:

$setValidity(validationErrorKey,isValid); 更改有效性状态,并通知表单

可以在$parsers/$formatters中调用此方法但是,如果可能,请使用ngModel.$validators管道,该管道设计用于自动调用此方法。

几个小时后,我在谷歌(以及StackOverflow!)上进行了多次搜索,但没有找到任何关于这个
ngModel.$validators
管道的信息。所有自定义验证示例都使用
$parsers/$formatters
设置,如下所示:

link: function (scope, elem, attr, ctrl) {
    // Other necessary logic...

    ctrl.$parsers.push(function () {
        // Validation logic
        ctrl.$setValidity('validation-type', true);
    });

    ctrl.$formatters.push(function () {
        // Validation logic
        ctrl.$setValidity('validation-type', true);
    });
},

问题:Angular文档说明上述代码不是最佳实践,而这种神秘的
ngModel.$validators
pipline是正确的方法。我没有找到关于这种更好做法的任何信息。如何使用
ngModel.$validators
正确实现此自定义客户端验证?

$validators
是Angular 1.3的新功能。这篇博文很好地解释了如何使用它们:

基本思想是在
ngModel.$validators
上添加一个函数,该函数返回一个
布尔值,指定模型是否有效

然后,您可以在HTML中引用该验证器,就像引用任何内置验证器一样。e、 g

<div ng-if="myForm.myField.$error.myValidator">
    some error message here
</div>

这里有一些错误消息

在您链接的同一页面中,稍微低一点,您将找到答案。。。