From 345b048d305dff09fca972358d11b4261de66c83 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=B6=E8=BF=9C=E6=96=B9?= Date: Mon, 12 Jun 2023 11:12:19 +0800 Subject: [PATCH 1/2] fix(v-model): fix lazy modifier not syncing external changes --- packages/runtime-dom/src/directives/vModel.ts | 3 --- 1 file changed, 3 deletions(-) diff --git a/packages/runtime-dom/src/directives/vModel.ts b/packages/runtime-dom/src/directives/vModel.ts index 2cf5f4cfc16..9c9823d7fd1 100644 --- a/packages/runtime-dom/src/directives/vModel.ts +++ b/packages/runtime-dom/src/directives/vModel.ts @@ -82,9 +82,6 @@ export const vModelText: ModelDirective< // avoid clearing unresolved text. #2302 if ((el as any).composing) return if (document.activeElement === el && el.type !== 'range') { - if (lazy) { - return - } if (trim && el.value.trim() === value) { return } From 7d87ec6ca0bb9d785c7e5073d5d56ad3e0ccccbf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=B6=E8=BF=9C=E6=96=B9?= Date: Mon, 12 Jun 2023 12:15:16 +0800 Subject: [PATCH 2/2] fix(v-model): update value synchronously when updating value --- packages/runtime-dom/src/directives/vModel.ts | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/packages/runtime-dom/src/directives/vModel.ts b/packages/runtime-dom/src/directives/vModel.ts index 9c9823d7fd1..127c6ddbf81 100644 --- a/packages/runtime-dom/src/directives/vModel.ts +++ b/packages/runtime-dom/src/directives/vModel.ts @@ -77,11 +77,19 @@ 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._assign = getModelAssigner(vnode) // avoid clearing unresolved text. #2302 if ((el as any).composing) return if (document.activeElement === el && el.type !== 'range') { + // #8546 + if (lazy && value === oldValue) { + return + } if (trim && el.value.trim() === value) { return }