From 54ed7592e416fc411196e9b767aebcc4f2ca20d8 Mon Sep 17 00:00:00 2001 From: Evan You Date: Thu, 8 Oct 2020 16:41:45 -0400 Subject: [PATCH] fix(v-model): ensure initial value is set after other attributes fix #2325 --- packages/runtime-dom/src/directives/vModel.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/packages/runtime-dom/src/directives/vModel.ts b/packages/runtime-dom/src/directives/vModel.ts index 90084eed20a..e18e97ee575 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