Преглед изворни кода

fix(v-model): fix the lazy modifier is not reset by other modifications (#8547)

close #8546
close #6564
close #6773
远方os пре 1 година
родитељ
комит
a52a02f43f
1 измењених фајлова са 7 додато и 2 уклоњено
  1. 7 2
      packages/runtime-dom/src/directives/vModel.ts

+ 7 - 2
packages/runtime-dom/src/directives/vModel.ts

@@ -82,7 +82,11 @@ export const vModelText: ModelDirective<
   mounted(el, { value }) {
     el.value = value == null ? '' : value
   },
-  beforeUpdate(el, { value, modifiers: { lazy, trim, number } }, vnode) {
+  beforeUpdate(
+    el,
+    { value, oldValue, modifiers: { lazy, trim, number } },
+    vnode
+  ) {
     el[assignKey] = getModelAssigner(vnode)
     // avoid clearing unresolved text. #2302
     if ((el as any).composing) return
@@ -97,7 +101,8 @@ export const vModelText: ModelDirective<
     }
 
     if (document.activeElement === el && el.type !== 'range') {
-      if (lazy) {
+      // #8546
+      if (lazy && value === oldValue) {
         return
       }
       if (trim && el.value.trim() === newValue) {