diff --git a/packages/runtime-dom/src/directives/vModel.ts b/packages/runtime-dom/src/directives/vModel.ts index 90084eed2..e18e97ee5 100644 --- a/packages/runtime-dom/src/directives/vModel.ts +++ b/packages/runtime-dom/src/directives/vModel.ts @@ -48,8 +48,7 @@ type ModelDirective = ObjectDirective export const vModelText: ModelDirective< HTMLInputElement | HTMLTextAreaElement > = { - created(el, { value, modifiers: { lazy, trim, number } }, vnode) { - el.value = value == null ? '' : value + created(el, { modifiers: { lazy, trim, number } }, vnode) { el._assign = getModelAssigner(vnode) const castToNumber = number || el.type === 'number' addEventListener(el, lazy ? 'change' : 'input', e => { @@ -77,6 +76,10 @@ export const vModelText: ModelDirective< addEventListener(el, 'change', onCompositionEnd) } }, + // set value on mounted so it's after min/max for type="range" + mounted(el, { value }) { + el.value = value == null ? '' : value + }, beforeUpdate(el, { value, modifiers: { trim, number } }, vnode) { el._assign = getModelAssigner(vnode) // avoid clearing unresolved text. #2302