]> git.ipfire.org Git - thirdparty/vuejs/core.git/commitdiff
fix(v-model): ensure initial value is set after other attributes
authorEvan You <yyx990803@gmail.com>
Thu, 8 Oct 2020 20:41:45 +0000 (16:41 -0400)
committerEvan You <yyx990803@gmail.com>
Thu, 8 Oct 2020 20:41:45 +0000 (16:41 -0400)
fix #2325

packages/runtime-dom/src/directives/vModel.ts

index 90084eed20ae3b4c54d53cdf6704913b3abab329..e18e97ee5750fa3eeac740f76e786f9549ad411c 100644 (file)
@@ -48,8 +48,7 @@ type ModelDirective<T> = ObjectDirective<T & { _assign: AssignerFn }>
 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