From a52a02f43fdf73d8aaad99c9cafed07f12ee422a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=BF=9C=E6=96=B9os?= Date: Fri, 31 May 2024 21:05:41 +0800 Subject: [PATCH] fix(v-model): fix the lazy modifier is not reset by other modifications (#8547) close #8546 close #6564 close #6773 --- packages/runtime-dom/src/directives/vModel.ts | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/packages/runtime-dom/src/directives/vModel.ts b/packages/runtime-dom/src/directives/vModel.ts index b0ea41728..95685540a 100644 --- a/packages/runtime-dom/src/directives/vModel.ts +++ b/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) {