使用EventBus实现兄弟组件之间的通信
使用EventBus实现兄弟组件之间的通信
需求:为了实现菜单折叠的效果,例如http://blog.gdfengshuo.com/example/work/#/dashboard
header组件和sliderbar组件都是main组件下面的子组件,两者为兄弟关系。
现有下面的思路:
点击折叠按钮,触发事件,让main组件和sliderbar组件 分别改变各自的样式。
即:兄弟组件通信

方法
1. 新建bus.js
import Vue from 'vue';
// 使用 Event Bus
const bus = new Vue();
export default bus;
2. header组件触发事件
header.vue
<div class="collapse-btn" @click="collapseChage">
<i class="el-icon-menu"></i>
</div>
<script>
import bus from '../common/bus'; // bie忘记引入 我没有挂载到vue实例上,需要自己引入
export default {
data() {
return {
collapse: false
}
},
methods:{
// 侧边栏折叠
collapseChage(){
this.collapse = !this.collapse;
bus.$emit('collapse', this.collapse);
}
}
}
</script>
3. 在silderbar组建中监听该事件,and to do something...
<el-menu
class="sidebar-el-menu"
:default-active="onRoutes"
:collapse="collapse"
background-color="#324157"
text-color="#bfcbd9"
active-text-color="#20a0ff"
unique-opened
router>
</el-menu>
<script>
import bus from '../common/bus'; // bie忘记引入 我没有挂载到vue实例上,需要自己引入
export default {
data() {
return {
collapse: false
}
},
created(){
// 通过 Event Bus 进行组件间通信,来折叠侧边栏
bus.$on('collapse', msg => {
this.collapse = msg;
})
}
}
</script>
补充
VUE 爬坑之旅-- eventBus 事件总线的基本使用和重复触发事件问题的解决
爬坑之旅-- eventBus 事件总线的基本使用和重复触发事件问题的解决
使用EventBus实现兄弟组件之间的通信的更多相关文章
- vue工程利用pubsub-js实现兄弟组件之间的通信
前言 项目是基于vue-cli创建的,不会搭建vue开发环境的同学可以百度,这里不再赘述. 步骤流程 vue项目搭建完成之后的文件图如下: 我的上一篇博客已经详细叙述vue工程中各个文件的作用,不清楚 ...
- Vue 使用eventBus 实现兄弟组件间的通信
实现方式: 主要是在相互通信的兄弟组件之中,都引入一个新的vue实例,然后通过分别调用这个实例的事件触发事件广播 和监听来实现通信和参数传递. 需求: a页面tree的增删改后,数据还是之前的老数据 ...
- vue父子组件、兄弟组件之间的通信和访问
注意:1. vue组件间的通信其实有很多种方法,最常用的还是属性传值.事件传值.vuex; 其他方法参考 https://juejin.im/post/5bd18c72e51d455e3f6e4334 ...
- vuejs兄弟组件之间的通信
var Event = new Vue();//准备一个空的实例对象 //A组件 var A = { template: ` <div> <span>我是A组件的数据-> ...
- Vue2.0父子组件之间和兄弟组件之间的数据交互
熟悉了Vue.js的同级组件之间通信,写此文章,以便记录. Vue是一个轻量级的渐进式框架,对于它的一些特性和优点,请在官网上进行查看,不再赘述. 使用NPM及相关命令行工具初始化的Vue工程,目录结 ...
- vue中组件之间的通信
一.vue中组件通信的种类 父组件向子组件的通信 子组件向父组件的通信 隔代组件之间的通信 兄弟 组件 之间的通信 二.实现通信的方式 props vue自定义的事件 消息订阅与发布 vuex sl ...
- vue2.0s中eventBus实现兄弟组件通信
在vue1.0中,组件之间的通信主要通过vm.$dispatch沿着父链向上传播和用vm.$broadcast向下广播来实现.然而在vue2.0中,已经废除了这种用法. vuex加入后,对组件之间的通 ...
- React生命周期, 兄弟组件之间通信
1.一个demo(https://www.reactjscn.com/docs/state-and-lifecycle.html) class Clock extends React.Componen ...
- vue组件之间的通信, 父子组件通信,兄弟组件通信
组件通讯包括:父子组件间的通信和兄弟组件间的通信.在组件化系统构建中,组件间通信必不可少的. 父组件--> 子组件 1. 属性设置 父组件关键代码如下: <template> < ...
随机推荐
- HDOJ 1121 Complete the Sequence
[题目大意]有一个数列P,它的第i项是当x=i时,一个关于x的整式的值.给出数列的前S项,你需要输出它的第S+1项到第S+C项,并且使整式的次数最低.多测. [数据范围]数据组数≤5000,S+C≤1 ...
- tab页以及jqgrid某些用法参考记录
<%@ Page Language="C#" AutoEventWireup="True" CodeBehind="CcrCreditHuman ...
- 获取安装的apk应用信息
//获取安装的应用名称 private List<String> getInstalledAppNames(){ List<PackageInfo> packages =thi ...
- MyEclipse 基本使用(三)
视频地址如下 https://pan.baidu.com/s/1boxK4LT#list/path=%2F%E5%8A%A8%E5%8A%9B%E8%8A%82%E7%82%B9%E8%A7%86%E ...
- SQL SERVER 提供了一些时间函数:
SQL SERVER 提供了一些时间函数:取当前时间:select getdate()取前一个月的时间:SELECT DATEADD(MONTH,-1,GETDATE()) 月份减一个月取年份:SEL ...
- dubbo事件通知机制 (2)
此文已由作者赵计刚授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 142 * 反射执行xxxService.onthrow方法:至少要有一个入参且第一个入参类型为T ...
- ubantu一些资料
1.在引导页面中选中win10 按E键 进入编辑 在最后一行后面加上一行ntldr /bootmgr 再按F10引导,发现可以进入windows10 2.ubantu安装qq https://lear ...
- cuda测试二维block的使用
#include "cuda_runtime.h" #include <stdio.h> #include <stdlib.h> #include < ...
- An error has occurred. See error log for more details. java.lang.NullPointerException
今天重新新建一个eclipse的空间,就报了这么一个错误,百度找了很多,发现不对头,都不行.后来点开错误一看,原来是web.xml里面没有文件头造成的. 解决办法:只需要在web.xml文件里添加文件 ...
- 数据结构14:队列(Queue),“先进先出”的数据结构
队列是线性表的一种,在操作数据元素时,和栈一样,有自己的规则:使用队列存取数据元素时,数据元素只能从表的一端进入队列,另一端出队列,如图1. 图1 队列示意图 称进入队列的一端为“队尾”:出队列的一端 ...