aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorCaitlin Potter2013-12-07 18:22:04 -0500
committerPete Bacon Darwin2013-12-17 13:10:40 +0000
commit5c97731a22ed87d64712e673efea0e8a05eae65f (patch)
tree9ad87d0339a53be48a75ab99d62e7ec287e81d78 /src
parentb2e472e7a2e3389456278d8e6a18384a1d797f89 (diff)
downloadangular.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.js14
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);