fix(runtime-dom): allow force updating value bindings for controlled inputs
fix #1471
This commit is contained in:
@@ -75,11 +75,8 @@ export const vModelText: ModelDirective<
|
||||
addEventListener(el, 'change', onCompositionEnd)
|
||||
}
|
||||
},
|
||||
beforeUpdate(el, { value, oldValue, modifiers: { trim, number } }, vnode) {
|
||||
beforeUpdate(el, { value, modifiers: { trim, number } }, vnode) {
|
||||
el._assign = getModelAssigner(vnode)
|
||||
if (value === oldValue) {
|
||||
return
|
||||
}
|
||||
if (document.activeElement === el) {
|
||||
if (trim && el.value.trim() === value) {
|
||||
return
|
||||
|
||||
@@ -10,7 +10,7 @@ import {
|
||||
RootHydrateFunction
|
||||
} from '@vue/runtime-core'
|
||||
import { nodeOps } from './nodeOps'
|
||||
import { patchProp } from './patchProp'
|
||||
import { patchProp, forcePatchProp } from './patchProp'
|
||||
// Importing from the compiler, will be tree-shaken in prod
|
||||
import { isFunction, isString, isHTMLTag, isSVGTag, extend } from '@vue/shared'
|
||||
|
||||
@@ -21,7 +21,7 @@ declare module '@vue/reactivity' {
|
||||
}
|
||||
}
|
||||
|
||||
const rendererOptions = extend({ patchProp }, nodeOps)
|
||||
const rendererOptions = extend({ patchProp, forcePatchProp }, nodeOps)
|
||||
|
||||
// lazy create the renderer - this makes core renderer logic tree-shakable
|
||||
// in case the user only imports reactivity utilities from Vue.
|
||||
|
||||
@@ -8,7 +8,12 @@ import { RendererOptions } from '@vue/runtime-core'
|
||||
|
||||
const nativeOnRE = /^on[a-z]/
|
||||
|
||||
export const patchProp: RendererOptions<Node, Element>['patchProp'] = (
|
||||
type DOMRendererOptions = RendererOptions<Node, Element>
|
||||
|
||||
export const forcePatchProp: DOMRendererOptions['forcePatchProp'] = (_, key) =>
|
||||
key === 'value'
|
||||
|
||||
export const patchProp: DOMRendererOptions['patchProp'] = (
|
||||
el,
|
||||
key,
|
||||
prevValue,
|
||||
|
||||
Reference in New Issue
Block a user