@@ -70,23 +70,43 @@ function FormController(element, attrs) {
70
70
if ( control . $name && form [ control . $name ] === control ) {
71
71
delete form [ control . $name ] ;
72
72
}
73
- forEach ( errors , cleanupControlErrors , control ) ;
73
+ forEach ( errors , function ( queue , validationToken ) {
74
+ form . $setValidity ( validationToken , true , control ) ;
75
+ } ) ;
74
76
} ;
75
77
76
78
form . $setValidity = function ( validationToken , isValid , control ) {
77
- if ( isValid ) {
78
- cleanupControlErrors ( errors [ validationToken ] , validationToken , control ) ;
79
+ var queue = errors [ validationToken ] ;
79
80
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
+ }
84
95
}
96
+
85
97
} else {
86
98
if ( ! invalidCount ) {
87
99
toggleValidCss ( isValid ) ;
88
100
}
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 ) ;
90
110
91
111
form . $valid = false ;
92
112
form . $invalid = true ;
@@ -99,31 +119,6 @@ function FormController(element, attrs) {
99
119
form . $pristine = false ;
100
120
} ;
101
121
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
- }
127
122
}
128
123
129
124
0 commit comments