fix(compiler-core): generate TS-cast safe assignment code for v-model
fix #4655
This commit is contained in:
@@ -76,9 +76,9 @@ export const transformModel: DirectiveTransform = (dir, node, context) => {
|
||||
if (bindingType === BindingTypes.SETUP_REF) {
|
||||
// v-model used on known ref.
|
||||
assignmentExp = createCompoundExpression([
|
||||
`${eventArg} => (`,
|
||||
`${eventArg} => ((`,
|
||||
createSimpleExpression(rawExp, false, exp.loc),
|
||||
`.value = $event)`
|
||||
`).value = $event)`
|
||||
])
|
||||
} else {
|
||||
// v-model used on a potentially ref binding in <script setup> inline mode.
|
||||
@@ -86,16 +86,16 @@ export const transformModel: DirectiveTransform = (dir, node, context) => {
|
||||
const altAssignment =
|
||||
bindingType === BindingTypes.SETUP_LET ? `${rawExp} = $event` : `null`
|
||||
assignmentExp = createCompoundExpression([
|
||||
`${eventArg} => (${context.helperString(IS_REF)}(${rawExp}) ? `,
|
||||
`${eventArg} => (${context.helperString(IS_REF)}(${rawExp}) ? (`,
|
||||
createSimpleExpression(rawExp, false, exp.loc),
|
||||
`.value = $event : ${altAssignment})`
|
||||
`).value = $event : ${altAssignment})`
|
||||
])
|
||||
}
|
||||
} else {
|
||||
assignmentExp = createCompoundExpression([
|
||||
`${eventArg} => (`,
|
||||
`${eventArg} => ((`,
|
||||
exp,
|
||||
` = $event)`
|
||||
`) = $event)`
|
||||
])
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user