Vue 子组件无法使用 $emit 向父组件传参

vue

问题描述:

在子组件中使用 $emit 创建自定义事件 SaveStaff,但是在父组件中无法触发

分析原因:

Vue 的官方文档对自定义事件的事件名有做说明:

不同于组件和 prop,事件名不存在任何自动化的大小写转换。而是触发的事件名需要完全匹配监听这个事件所用的名称。

如果触发一个 camelCase 名字的事件:

this.$emit('myEvent')

则监听这个名字的 kebab-case 版本是不会有任何效果的:

<!-- 没有效果 -->

<my-component v-on:my-event="doSomething"></my-component>

不同于组件和 prop,事件名不会被用作一个 JavaScript 变量名或 property 名,所以就没有理由使用 camelCase 或 PascalCase 了

并且 v-on 事件监听器在 DOM 模板中会被自动转换为全小写 (因为 HTML 是大小写不敏感的),

所以 v-on:myEvent 将会变成 v-on:myevent ——导致 myEvent 不可能被监听到。

因此建议始终使用 kebab-case 的事件名。

解决方案:

将事件名改为全小写

以上是 Vue 子组件无法使用 $emit 向父组件传参 的全部内容, 来源链接: utcz.com/z/378686.html

回到顶部