|
|
@@ -209,25 +209,20 @@ export const vModelSelect: ModelDirective<HTMLSelectElement> = {
|
|
|
},
|
|
|
// set value in mounted & updated because <select> relies on its children
|
|
|
// <option>s.
|
|
|
- mounted(el, { value, oldValue, modifiers: { number } }) {
|
|
|
- setSelected(el, value, oldValue, number)
|
|
|
+ mounted(el, { value, modifiers: { number } }) {
|
|
|
+ setSelected(el, value, number)
|
|
|
},
|
|
|
beforeUpdate(el, _binding, vnode) {
|
|
|
el[assignKey] = getModelAssigner(vnode)
|
|
|
},
|
|
|
- updated(el, { value, oldValue, modifiers: { number } }) {
|
|
|
+ updated(el, { value, modifiers: { number } }) {
|
|
|
if (!el._assigning) {
|
|
|
- setSelected(el, value, oldValue, number)
|
|
|
+ setSelected(el, value, number)
|
|
|
}
|
|
|
},
|
|
|
}
|
|
|
|
|
|
-function setSelected(
|
|
|
- el: HTMLSelectElement,
|
|
|
- value: any,
|
|
|
- oldValue: any,
|
|
|
- number: boolean,
|
|
|
-) {
|
|
|
+function setSelected(el: HTMLSelectElement, value: any, number: boolean) {
|
|
|
const isMultiple = el.multiple
|
|
|
const isArrayValue = isArray(value)
|
|
|
if (isMultiple && !isArrayValue && !isSet(value)) {
|
|
|
@@ -256,11 +251,9 @@ function setSelected(
|
|
|
} else {
|
|
|
option.selected = value.has(optionValue)
|
|
|
}
|
|
|
- } else {
|
|
|
- if (looseEqual(getValue(option), value)) {
|
|
|
- if (el.selectedIndex !== i) el.selectedIndex = i
|
|
|
- return
|
|
|
- }
|
|
|
+ } else if (looseEqual(getValue(option), value)) {
|
|
|
+ if (el.selectedIndex !== i) el.selectedIndex = i
|
|
|
+ return
|
|
|
}
|
|
|
}
|
|
|
if (!isMultiple && el.selectedIndex !== -1) {
|