fix(v-on): capitalize dynamic event names

This commit is contained in:
Evan You
2020-07-13 17:36:46 -04:00
parent 576344d2c3
commit 9152a89016
5 changed files with 23 additions and 16 deletions

View File

@@ -14,6 +14,7 @@ import { createCompilerError, ErrorCodes } from '../errors'
import { processExpression } from './transformExpression'
import { validateBrowserExpression } from '../validateExpression'
import { isMemberExpression, hasScopeRef } from '../utils'
import { CAPITALIZE } from '../runtimeHelpers'
const fnExpRE = /^([\w$_]+|\([^)]*?\))\s*=>|^function(?:\s+[\w$]+)?\s*\(/
@@ -47,12 +48,16 @@ export const transformOn: DirectiveTransform = (
: capitalize(rawName)
eventName = createSimpleExpression(`on${normalizedName}`, true, arg.loc)
} else {
eventName = createCompoundExpression([`"on" + (`, arg, `)`])
eventName = createCompoundExpression([
`"on" + ${context.helperString(CAPITALIZE)}(`,
arg,
`)`
])
}
} else {
// already a compound expression.
eventName = arg
eventName.children.unshift(`"on" + (`)
eventName.children.unshift(`"on" + ${context.helperString(CAPITALIZE)}(`)
eventName.children.push(`)`)
}