首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ngModel.$validators管道是什么?

ngModel.$validators管道是什么?
EN

Stack Overflow用户
提问于 2014-09-10 15:14:41
回答 1查看 10.8K关注 0票数 25

在对Angular.js中的自定义客户端验证进行一些基础研究时,我正在阅读ngModel.NgModelController文档,并发现了下面的神秘行:

$setValidity(validationErrorKey,isValid);更改有效性状态,并通知表单。 此方法可以在$解析器/$格式化器中调用。不过,如果可能的话,请使用ngModel.$管道,该管道旨在自动调用此方法。

几个小时后,谷歌(和StackOverflow!)搜索之后,我在任何地方都没有发现关于这个ngModel.$validators管道的任何信息。所有自定义验证示例都使用$parsers/$formatters设置,如下所示:

代码语言:javascript
复制
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);
    });
},

问题:角文档指出,上面的代码不是最佳实践,这个神秘的ngModel.$validators样条是正确的方法。我没有找到任何关于这一更好做法的信息。如何使用ngModel.$validators正确地实现自定义客户端验证?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-10 15:37:40

$validators是新的角1.3。这篇博文很好地解释了如何使用它们:http://www.yearofmoo.com/2014/09/taming-forms-in-angularjs-1-3.html#the-validators-pipeline

基本思想是将一个函数添加到ngModel.$validators中,该函数返回一个指定模型是否有效的boolean

然后,您可以参考HTML中的验证器,就像引用任何内置的验证器一样。例如:

代码语言:javascript
复制
<div ng-if="myForm.myField.$error.myValidator">
    some error message here
</div>
票数 24
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25769072

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档