当我们有控制器或ng-model-controller时,我们可以做到
ctrl.$parsers.push(function(viewValue){
ctrl.$setValidity('valid', true);
});
并最终自动调用$ digest并进行验证呈现。 如果我想在模糊上验证字段该怎么办?我做了
element.blur(function(){
[validations]
ctrl.$setValidity('valid', false);
})
并且结果不会在带有ng-binded元素的html上更改,如何呈现此更改?
答案 0 :(得分:4)
您必须在scope.$apply
中致电ctrl.$setValidity('valid', false);
scope.$apply(function(){
ctrl.$setValidity('valid', false);
})
答案 1 :(得分:2)
或者更好的是,为了避免进一步的问题,使用CSS来解决这个问题。我们假设以下代码:
<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魔术:
textarea:focus ~ .error {
display:none;
}
波浪号是一般的兄弟选择器,所以只要你的田地集中,你的所有错误都会隐藏。