Просмотр исходного кода

fix(runtime-core): should allow v-model listeners to fallthrough, but ignore for warning

fix #1543
Evan You 5 лет назад
Родитель
Сommit
903e8f697e

+ 1 - 5
packages/runtime-core/src/componentProps.ts

@@ -256,11 +256,7 @@ function setFullProps(
       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

+ 6 - 2
packages/runtime-core/src/componentRenderUtils.ts

@@ -121,8 +121,12 @@ export function renderComponentRoot(
         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)
           }