使用Bus.js进行兄弟(非父子)组件通信
首先需要在任意地方添加一个bus.js;
在bus.js里面 写入下面信息
import Vue from 'vue' export default new Vue;
在需要通信的组件都引入Bus.js
如果你的bus.js是自定义一个bus的文件那from后面就改成你的所放的位置
import Bus from './bus.js'
接下来就是要组件通信了
添加一个 触发 #emit的事件按钮
<template> <div id="emit"> <button @click="bus">按钮</button> </div> </template> import Bus from './bus.js' export default { data() { return { message: ''" } }, methods: { bus () { Bus.$emit('msg', '我要传给兄弟组件们,你收到没有') } } }
打开要和$emit通信的另外一个组件
在钩子函数中监听msg事件
<template> <div id="on"> <p>{{message}}</p> </div> </template> import Bus from './bus.js' export default { data() { return { href: 'www.dddddd//d/d/d' } }, mounted() { $("body").on("click",".router_itme",function(){
//发送方
Bus.$emit("hrefs", this.href);
}) } }
打开要和$emit通信的另外一个组件 ,在钩子函数中监听msg事件
<template> <div id="on"> <p>{{message}}</p> </div> </template> import Bus from './bus.js' export default { data() { return { href : '' } }, mounted(){ // this.href = location.href.split('#')[1] // 接收传header组件传过来的路径 let self = this; Bus.$on('hrefs', (e) => { self.href = e.split('#')[1] }) } }