fix(select): auto-select new option that is marked as selected

When adding a new <option> element, if the DOM of this option element
states that the element is marked as `selected`, then select the new
<option> element

Closes #6828
This commit is contained in:
Lucas Galfaso
2014-07-09 00:44:59 +02:00
parent 36831eccd1
commit b8ae73e17c

View File

@@ -164,7 +164,7 @@ var selectDirective = ['$compile', '$parse', function($compile, $parse) {
};
self.addOption = function(value) {
self.addOption = function(value, element) {
assertNotHasOwnProperty(value, '"option value"');
optionsMap[value] = true;
@@ -172,6 +172,12 @@ var selectDirective = ['$compile', '$parse', function($compile, $parse) {
$element.val(value);
if (unknownOption.parent()) unknownOption.remove();
}
// Workaround for https://code.google.com/p/chromium/issues/detail?id=381459
// Adding an <option selected="selected"> element to a <select required="required"> should
// automatically select the new element
if (element[0].hasAttribute('selected')) {
element[0].selected = true;
}
};
@@ -625,10 +631,10 @@ var optionDirective = ['$interpolate', function($interpolate) {
if (oldVal !== newVal) {
selectCtrl.removeOption(oldVal);
}
selectCtrl.addOption(newVal);
selectCtrl.addOption(newVal, element);
});
} else {
selectCtrl.addOption(attr.value);
selectCtrl.addOption(attr.value, element);
}
element.on('$destroy', function() {