瀏覽代碼

fix(v-model): avoid resetting value of in-focus & lazy input

fix #4182
Evan You 4 年之前
父節點
當前提交
ac74e1dd33
共有 1 個文件被更改,包括 4 次插入1 次删除
  1. 4 1
      packages/runtime-dom/src/directives/vModel.ts

+ 4 - 1
packages/runtime-dom/src/directives/vModel.ts

@@ -80,11 +80,14 @@ export const vModelText: ModelDirective<
   mounted(el, { value }) {
   mounted(el, { value }) {
     el.value = value == null ? '' : value
     el.value = value == null ? '' : value
   },
   },
-  beforeUpdate(el, { value, modifiers: { trim, number } }, vnode) {
+  beforeUpdate(el, { value, modifiers: { lazy, trim, number } }, vnode) {
     el._assign = getModelAssigner(vnode)
     el._assign = getModelAssigner(vnode)
     // avoid clearing unresolved text. #2302
     // avoid clearing unresolved text. #2302
     if ((el as any).composing) return
     if ((el as any).composing) return
     if (document.activeElement === el) {
     if (document.activeElement === el) {
+      if (lazy) {
+        return
+      }
       if (trim && el.value.trim() === value) {
       if (trim && el.value.trim() === value) {
         return
         return
       }
       }