QT开发中文网

Event Bus 怎么传递插槽?

事件总线(Event Bus)的原理是利用 Vue 实例的 $emit$on 方法来实现跨组件通信。因此,如果要通过事件总线传递插槽,可以在父组件中创建一个事件,并将插槽内容作为事件参数传递。然后在子组件中监听该事件,并将接收到的插槽内容渲染到模板中。

具体实现步骤如下:

  1. 在父组件中定义一个 eventBus 实例:
// ParentComponent.vue

export default {
  created() {
    this.eventBus = new Vue();
  }
}
  1. 在父组件中将插槽内容作为参数触发一个自定义事件:
// ParentComponent.vue

<template>
  <div>
    <slot name="mySlot"></slot>
  </div>
</template>

<script>
export default {
  methods: {
    sendDataToChild() {
      const slotContent = this.$slots.mySlot;
      this.eventBus.$emit('my-event', slotContent);
    }
  }
};
</script>
  1. 在子组件中监听这个自定义事件,并将接收到的插槽内容渲染到模板中:
// ChildComponent.vue

<template>
  <div>{{ slotContent }}</div>
</template>

<script>
export default {
  created() {
    this.eventBus.$on('my-event', (content) => {
      this.slotContent = content;
    });
  },
  
  data() {
    return {
      slotContent: ''
    };
  }
};
</script>

这样,当父组件中触发 my-event 事件时,子组件就会接收到插槽内容,并将其渲染到模板中。需要注意的是,在使用事件总线传递数据时,要确保所有涉及到的组件都能够正确地访问到 eventBus 实例。

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://qt.0voice.com/?id=2600

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?