fix(runtime-dom): v-model should support number modifier with select tag (#2308)

close #2252
This commit is contained in:
edison
2020-10-08 03:06:41 +08:00
committed by GitHub
parent 3d3323f452
commit d744b8a2dc
2 changed files with 107 additions and 2 deletions

View File

@@ -166,11 +166,14 @@ export const vModelRadio: ModelDirective<HTMLInputElement> = {
}
export const vModelSelect: ModelDirective<HTMLSelectElement> = {
created(el, binding, vnode) {
created(el, { modifiers: { number } }, vnode) {
addEventListener(el, 'change', () => {
const selectedVal = Array.prototype.filter
.call(el.options, (o: HTMLOptionElement) => o.selected)
.map(getValue)
.map(
(o: HTMLOptionElement) =>
number ? toNumber(getValue(o)) : getValue(o)
)
el._assign(el.multiple ? selectedVal : selectedVal[0])
})
el._assign = getModelAssigner(vnode)