什么是ngModel$验证器管道
What *is* the ngModel.$validators pipeline?
在Angular.js中对自定义客户端验证进行一些基础研究时,我正在阅读ngModel.NgModelController文档,发现了以下隐晦的行:
$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
管道是正确的做法。我没有找到任何关于这种更好做法的信息。如何使用ngModel.$validators
来正确实现这种自定义客户端验证?
$validators
是Angular 1.3的新版本。这篇博客文章很好地解释了如何使用它们:http://www.yearofmoo.com/2014/09/taming-forms-in-angularjs-1-3.html#the-验证器管道
基本思想是在ngModel.$validators
上添加一个函数,该函数返回指定模型是否有效的boolean
。
然后,您可以在HTML中引用该验证器,就像引用任何内置验证器一样。例如
<div ng-if="myForm.myField.$error.myValidator">
some error message here
</div>
相关文章:
- 正在验证8个真/假复选框或复选框中的2个
- 借助asp.net验证或java脚本对多个文本进行验证
- 如何检查管道中未定义的项目
- jQuery自定义验证比较多个输入的序列
- 使用html中的外部javascript进行数据验证
- 如何使用jquery Validation验证Formspread
- jquery中的文本框验证
- 在验证和发送邮件后更改联系人表单的 html
- 代码不会验证
- JS验证ajax返回的html中的表单数据
- 同步调用,直到用户通过angular验证为访问者
- 带有加号的电话号码验证(可选)
- 解析javascript表单验证器
- 两位数的月份日期验证
- 使用angularjs验证文本框中的电子邮件
- 验证Javascript中的Textarea
- 使用regex的jquery keydown绑定不会验证撇号和句点
- Jquery表单验证插件-如果选中复选框,如何在提交时执行某些操作
- 什么是ngModel$验证器管道
- 使用ajax调用flask服务器进行登录身份验证(管道破裂)