diff options
| -rw-r--r-- | src/directive/input.js | 13 | ||||
| -rw-r--r-- | test/directive/inputSpec.js | 9 |
2 files changed, 15 insertions, 7 deletions
diff --git a/src/directive/input.js b/src/directive/input.js index 631e3a36..2e1c7fff 100644 --- a/src/directive/input.js +++ b/src/directive/input.js @@ -800,22 +800,21 @@ var NgModelController = ['$scope', '$exceptionHandler', '$attrs', 'ngModel', '$e if (isValid) { if ($error[validationErrorKey]) invalidCount--; - $error[validationErrorKey] = false; - toggleValidCss(isValid); if (!invalidCount) { - toggleValidCss(isValid, validationErrorKey); + toggleValidCss(true); this.$valid = true; this.$invalid = false; } } else { - if (!$error[validationErrorKey]) invalidCount++; - $error[validationErrorKey] = true; - toggleValidCss(isValid) - toggleValidCss(isValid, validationErrorKey); + toggleValidCss(false) this.$invalid = true; this.$valid = false; + invalidCount++; } + $error[validationErrorKey] = !isValid; + toggleValidCss(isValid, validationErrorKey); + parentForm.$setValidity(validationErrorKey, isValid, this); }; diff --git a/test/directive/inputSpec.js b/test/directive/inputSpec.js index ad1670f9..2a7244c9 100644 --- a/test/directive/inputSpec.js +++ b/test/directive/inputSpec.js @@ -269,6 +269,15 @@ describe('ng-model', function() { dealoc(element); })); + + + it('should set invalid classes on init', inject(function($compile, $rootScope) { + var element = $compile('<input type="email" ng-model="value" required />')($rootScope); + $rootScope.$digest(); + + expect(element).toBeInvalid(); + expect(element).toHaveClass('ng-invalid-required'); + })); }); |
