From: Evan You Date: Thu, 8 Oct 2020 20:41:45 +0000 (-0400) Subject: fix(v-model): ensure initial value is set after other attributes X-Git-Tag: v3.0.1~35 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=54ed7592e416fc411196e9b767aebcc4f2ca20d8;p=thirdparty%2Fvuejs%2Fcore.git fix(v-model): ensure initial value is set after other attributes fix #2325 --- diff --git a/packages/runtime-dom/src/directives/vModel.ts b/packages/runtime-dom/src/directives/vModel.ts index 90084eed20..e18e97ee57 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