diff options
| author | Caitlin Potter | 2013-12-07 18:22:04 -0500 | 
|---|---|---|
| committer | Pete Bacon Darwin | 2013-12-17 13:10:40 +0000 | 
| commit | 5c97731a22ed87d64712e673efea0e8a05eae65f (patch) | |
| tree | 9ad87d0339a53be48a75ab99d62e7ec287e81d78 /src | |
| parent | b2e472e7a2e3389456278d8e6a18384a1d797f89 (diff) | |
| download | angular.js-5c97731a22ed87d64712e673efea0e8a05eae65f.tar.bz2 | |
fix(select): invalidate when 'multiple`, `required` and model is `[]`
When `multiple` attribute is set on a `<select>` control and the model value is an empty array,
we should invalidate the control.  Previously, this directive was using incorrect logic for
determining if the model was empty.
Closes #5337
Diffstat (limited to 'src')
| -rw-r--r-- | src/ng/directive/select.js | 14 | 
1 files changed, 3 insertions, 11 deletions
| diff --git a/src/ng/directive/select.js b/src/ng/directive/select.js index d87fa5d3..3dbb5b8e 100644 --- a/src/ng/directive/select.js +++ b/src/ng/directive/select.js @@ -221,18 +221,10 @@ var selectDirective = ['$compile', '$parse', function($compile,   $parse) {        selectCtrl.init(ngModelCtrl, nullOption, unknownOption);        // required validator -      if (multiple && (attr.required || attr.ngRequired)) { -        var requiredValidator = function(value) { -          ngModelCtrl.$setValidity('required', !attr.required || (value && value.length)); -          return value; +      if (multiple) { +        ngModelCtrl.$isEmpty = function(value) { +          return !value || value.length === 0;          }; - -        ngModelCtrl.$parsers.push(requiredValidator); -        ngModelCtrl.$formatters.unshift(requiredValidator); - -        attr.$observe('required', function() { -          requiredValidator(ngModelCtrl.$viewValue); -        });        }        if (optionsExp) setupAsOptions(scope, element, ngModelCtrl); | 
