mirror of
https://github.com/zhigang1992/angular.js.git
synced 2026-06-18 12:14:04 +08:00
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:
@@ -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() {
|
||||
|
||||
Reference in New Issue
Block a user