Skip to content

Commit 661d880

Browse files
committed
fix component v-model with "value" binding expression (fix #5002)
1 parent 394679f commit 661d880

File tree

1 file changed

+8
-3
lines changed

1 file changed

+8
-3
lines changed

Diff for: src/compiler/directives/model.js

+8-3
Original file line numberDiff line numberDiff line change
@@ -10,17 +10,22 @@ export function genComponentModel (
1010
): ?boolean {
1111
const { number, trim } = modifiers || {}
1212

13-
let valueExpression = 'value'
13+
const baseValueExpression = '$$v'
14+
let valueExpression = baseValueExpression
1415
if (trim) {
15-
valueExpression = `(typeof value === 'string' ? value.trim() : value)`
16+
valueExpression =
17+
`(typeof ${baseValueExpression} === 'string'` +
18+
`? ${baseValueExpression}.trim()` +
19+
`: ${baseValueExpression})`
1620
}
1721
if (number) {
1822
valueExpression = `_n(${valueExpression})`
1923
}
24+
const assignment = genAssignmentCode(value, valueExpression)
2025

2126
el.model = {
2227
value: `(${value})`,
23-
callback: `function (value) {${genAssignmentCode(value, valueExpression)}}`
28+
callback: `function (${baseValueExpression}) {${assignment}}`
2429
}
2530
}
2631

0 commit comments

Comments
 (0)