首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Angular Validation $parsers

Angular Validation $parsers
EN

Stack Overflow用户
提问于 2013-03-27 14:35:52
回答 2查看 4.2K关注 0票数 4

当我们有一个控制器或ng-model-controller时,我们可以这样做

代码语言:javascript
复制
ctrl.$parsers.push(function(viewValue){ 
    ctrl.$setValidity('valid', true); 
});

最后,会自动调用$digest并呈现验证。如果我想在模糊上验证一个字段,该怎么办?我就是这么做的

代码语言:javascript
复制
element.blur(function(){ 
    [validations]
    ctrl.$setValidity('valid', false); 
})

并且结果在元素ng绑定的html上不会改变,如何呈现这种改变?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-27 14:40:38

您必须在scope.$apply中调用ctrl.$setValidity('valid', false);

代码语言:javascript
复制
scope.$apply(function(){
    ctrl.$setValidity('valid', false); 
})
票数 4
EN

Stack Overflow用户

发布于 2013-07-15 21:46:40

或者更好的是,为了避免进一步的问题,使用CSS来解决这个问题。让我们假设以下代码:

代码语言:javascript
复制
<textarea ng-model="description" ng-minlength="50"></textarea>
<span class="error" ng-show="myform.$error.minlength">Too short!</span>
<span class="error" ng-show="myform.$error.someOtherValidation">Err!</span>

当您开始输入时,Angular开始验证,并出现错误(这有时是可取的,但更多情况下不是)。

为了不搞乱Angular的内部结构,你可以做一些CSS的魔术:

代码语言:javascript
复制
textarea:focus ~ .error {
  display:none;
}

波浪号是一个通用的同级选择器,所以只要你把你的字段集中起来,所有的错误都会隐藏起来。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15653115

复制
相关文章

相似问题

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