Vue.js 如何将事件发送到Vue中的父布局插槽?
我试图弄清楚如何拾取Vue.js 如何将事件发送到Vue中的父布局插槽?,vue.js,Vue.js,我试图弄清楚如何拾取组件内部触发的事件 这是我的组件 <template> <button @click"$emit('event')">Submit</button> </template> 提交 它发出一个我想在父布局的插槽中捕获的事件 <template> <slot @event="doThis"/> </template> 我如何做到这一点。我的一些读数导致我进入范围插槽,但我不是1
组件内部触发的事件
这是我的组件
<template>
<button @click"$emit('event')">Submit</button>
</template>
提交
它发出一个我想在父布局的插槽中捕获的事件
<template>
<slot @event="doThis"/>
</template>
我如何做到这一点。我的一些读数导致我进入范围插槽,但我不是100%确定。使用事件总线刷新事件,以便任何组件都可以捕获它,如果他侦听以下内容:
<template>
<button @click="EventBus.$emit('event', params)">Submit</button>
</template>
在event-bus.js中
import Vue from 'vue';
export const EventBus = new Vue();
在父组件和子组件中,导入事件总线文件:
从'./event bus.js'导入{EventBus}
在父组件中,侦听事件:
methods:
{
const clickHandler = function(params) { /*Do whatever */ }
}
mounted()
{
EventBus.$on('event', clickHandler);
}
在子组件中,您可以按如下方式触发事件:
<template>
<button @click="EventBus.$emit('event', params)">Submit</button>
</template>
提交
您无法收听
上的事件。参考:你能给我们看看插槽里的标记吗?答案是这样的,许多组件库都使用这种方法。如果没有其他解决方案,这种方法是有效的。缺点是,原本是“本地”的事件现在是“全局”的,如果不小心处理,可能会导致维护/调试方面的麻烦。