Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vue.js 如何将事件发送到Vue中的父布局插槽?_Vue.js - Fatal编程技术网

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>

提交

您无法收听
上的事件。参考:你能给我们看看插槽里的标记吗?答案是这样的,许多组件库都使用这种方法。如果没有其他解决方案,这种方法是有效的。缺点是,原本是“本地”的事件现在是“全局”的,如果不小心处理,可能会导致维护/调试方面的麻烦。