在对Angular.js中的自定义客户端验证进行一些基础研究时,我正在阅读ngModel.NgModelController文档,并发现了下面的神秘行:
$setValidity(validationErrorKey,isValid);更改有效性状态,并通知表单。 此方法可以在$解析器/$格式化器中调用。不过,如果可能的话,请使用ngModel.$管道,该管道旨在自动调用此方法。
几个小时后,谷歌(和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);
});
},问题:角文档指出,上面的代码不是最佳实践,这个神秘的ngModel.$validators样条是正确的方法。我没有找到任何关于这一更好做法的信息。如何使用ngModel.$validators正确地实现自定义客户端验证?
发布于 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中的验证器,就像引用任何内置的验证器一样。例如:
<div ng-if="myForm.myField.$error.myValidator">
some error message here
</div>https://stackoverflow.com/questions/25769072
复制相似问题