@@ -70,23 +70,43 @@ function FormController(element, attrs) {
7070 if ( control . $name && form [ control . $name ] === control ) {
7171 delete form [ control . $name ] ;
7272 }
73- forEach ( errors , cleanupControlErrors , control ) ;
73+ forEach ( errors , function ( queue , validationToken ) {
74+ form . $setValidity ( validationToken , true , control ) ;
75+ } ) ;
7476 } ;
7577
7678 form . $setValidity = function ( validationToken , isValid , control ) {
77- if ( isValid ) {
78- cleanupControlErrors ( errors [ validationToken ] , validationToken , control ) ;
79+ var queue = errors [ validationToken ] ;
7980
80- if ( ! invalidCount ) {
81- toggleValidCss ( isValid ) ;
82- form . $valid = true ;
83- form . $invalid = false ;
81+ if ( isValid ) {
82+ if ( queue ) {
83+ arrayRemove ( queue , control ) ;
84+ if ( ! queue . length ) {
85+ invalidCount -- ;
86+ if ( ! invalidCount ) {
87+ toggleValidCss ( isValid ) ;
88+ form . $valid = true ;
89+ form . $invalid = false ;
90+ }
91+ errors [ validationToken ] = false ;
92+ toggleValidCss ( true , validationToken ) ;
93+ parentForm . $setValidity ( validationToken , true , form ) ;
94+ }
8495 }
96+
8597 } else {
8698 if ( ! invalidCount ) {
8799 toggleValidCss ( isValid ) ;
88100 }
89- addControlError ( validationToken , control ) ;
101+ if ( queue ) {
102+ if ( includes ( queue , control ) ) return ;
103+ } else {
104+ errors [ validationToken ] = queue = [ ] ;
105+ invalidCount ++ ;
106+ toggleValidCss ( false , validationToken ) ;
107+ parentForm . $setValidity ( validationToken , false , form ) ;
108+ }
109+ queue . push ( control ) ;
90110
91111 form . $valid = false ;
92112 form . $invalid = true ;
@@ -99,31 +119,6 @@ function FormController(element, attrs) {
99119 form . $pristine = false ;
100120 } ;
101121
102- function cleanupControlErrors ( queue , validationToken , control ) {
103- if ( queue ) {
104- control = control || this ; // so that we can be used in forEach;
105- arrayRemove ( queue , control ) ;
106- if ( ! queue . length ) {
107- invalidCount -- ;
108- errors [ validationToken ] = false ;
109- toggleValidCss ( true , validationToken ) ;
110- parentForm . $setValidity ( validationToken , true , form ) ;
111- }
112- }
113- }
114-
115- function addControlError ( validationToken , control ) {
116- var queue = errors [ validationToken ] ;
117- if ( queue ) {
118- if ( includes ( queue , control ) ) return ;
119- } else {
120- errors [ validationToken ] = queue = [ ] ;
121- invalidCount ++ ;
122- toggleValidCss ( false , validationToken ) ;
123- parentForm . $setValidity ( validationToken , false , form ) ;
124- }
125- queue . push ( control ) ;
126- }
127122}
128123
129124
0 commit comments