Skip to content

Commit 87c72ae

Browse files
authoredNov 14, 2022
fix(v-model): ensure v-model listener casing is consistent with manual v-on listener (#7067)
fix #7066
1 parent b46ba6e commit 87c72ae

File tree

3 files changed

+8
-7
lines changed

3 files changed

+8
-7
lines changed
 

‎packages/compiler-core/__tests__/transforms/__snapshots__/vModel.spec.ts.snap

+3-3
Original file line numberDiff line numberDiff line change
@@ -83,9 +83,9 @@ return function render(_ctx, _cache) {
8383
const { openBlock: _openBlock, createElementBlock: _createElementBlock } = _Vue
8484
8585
return (_openBlock(), _createElementBlock(\\"input\\", {
86-
value: model,
87-
\\"onUpdate:value\\": $event => ((model) = $event)
88-
}, null, 40 /* PROPS, HYDRATE_EVENTS */, [\\"value\\", \\"onUpdate:value\\"]))
86+
\\"foo-value\\": model,
87+
\\"onUpdate:fooValue\\": $event => ((model) = $event)
88+
}, null, 40 /* PROPS, HYDRATE_EVENTS */, [\\"foo-value\\", \\"onUpdate:fooValue\\"]))
8989
}
9090
}"
9191
`;

‎packages/compiler-core/__tests__/transforms/vModel.spec.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -253,13 +253,13 @@ describe('compiler: transform v-model', () => {
253253
})
254254

255255
test('with argument', () => {
256-
const root = parseWithVModel('<input v-model:value="model" />')
256+
const root = parseWithVModel('<input v-model:foo-value="model" />')
257257
const node = root.children[0] as ElementNode
258258
const props = ((node.codegenNode as VNodeCall).props as ObjectExpression)
259259
.properties
260260
expect(props[0]).toMatchObject({
261261
key: {
262-
content: 'value',
262+
content: 'foo-value',
263263
isStatic: true
264264
},
265265
value: {
@@ -270,7 +270,7 @@ describe('compiler: transform v-model', () => {
270270

271271
expect(props[1]).toMatchObject({
272272
key: {
273-
content: 'onUpdate:value',
273+
content: 'onUpdate:fooValue',
274274
isStatic: true
275275
},
276276
value: {

‎packages/compiler-core/src/transforms/vModel.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import {
1818
} from '../utils'
1919
import { IS_REF } from '../runtimeHelpers'
2020
import { BindingTypes } from '../options'
21+
import { camelize } from '@vue/shared'
2122

2223
export const transformModel: DirectiveTransform = (dir, node, context) => {
2324
const { exp, arg } = dir
@@ -77,7 +78,7 @@ export const transformModel: DirectiveTransform = (dir, node, context) => {
7778
const propName = arg ? arg : createSimpleExpression('modelValue', true)
7879
const eventName = arg
7980
? isStaticExp(arg)
80-
? `onUpdate:${arg.content}`
81+
? `onUpdate:${camelize(arg.content)}`
8182
: createCompoundExpression(['"onUpdate:" + ', arg])
8283
: `onUpdate:modelValue`
8384

0 commit comments

Comments
 (0)
Please sign in to comment.