let camelKey
if (options && hasOwn(options, (camelKey = camelize(key)))) {
props[camelKey] = value
- } else if (
- (!emits || !isEmitListener(emits, key)) &&
- // ignore v-model listeners
- !key.startsWith(`onUpdate:`)
- ) {
+ } else if (!emits || !isEmitListener(emits, key)) {
// Any non-declared (either as a prop or an emitted event) props are put
// into a separate `attrs` object for spreading. Make sure to preserve
// original key casing
for (let i = 0, l = allAttrs.length; i < l; i++) {
const key = allAttrs[i]
if (isOn(key)) {
- // remove `on`, lowercase first letter to reflect event casing accurately
- eventAttrs.push(key[2].toLowerCase() + key.slice(3))
+ // ignore v-model handlers when they fail to fallthrough
+ if (!key.startsWith('onUpdate:')) {
+ // remove `on`, lowercase first letter to reflect event casing
+ // accurately
+ eventAttrs.push(key[2].toLowerCase() + key.slice(3))
+ }
} else {
extraAttrs.push(key)
}