Vue2.0子同级组件之间数据交互方法


Posted in Javascript onFebruary 28, 2018

熟悉了Vue.js的同级组件之间通信,写此文章,以便记录。

Vue是一个轻量级的渐进式框架,对于它的一些特性和优点,请在官网上进行查看,不再赘述。

使用NPM及相关命令行工具初始化的Vue工程,目录结构如下

Vue2.0子同级组件之间数据交互方法

接着我们进入Demo,首先我们可以删除掉模板项目中src/components/Hello.vue,然后在App.vue中删除对于Hello子组件的注册和使用还有一些其他无关紧要的东西,此时的App.vue应为这样

Vue2.0子同级组件之间数据交互方法

一、我们先来创建中央事件总线,在src/assets/下创建一个eventBus.js,

内容如下(eventBus中我们只创建了一个新的Vue实例,以后它就承担起了组件之间通信的桥梁了,也就是中央事件总线。)

Vue2.0子同级组件之间数据交互方法

二、 创建一个firstChild组件,引入eventBus这个事件总线,接着添加一个按钮并绑定一个点击事件

Vue2.0子同级组件之间数据交互方法

1、我们在响应点击事件的sendMsg函数中用$emit触发了一个自定义的userDefinedEvent事件,并传递了一个字符串参数

2、$emit实例方法触发当前实例(这里的当前实例就是bus)上的事件,附加参数都会传给监听器回调。

三、 我们再创建一个secondChild组件,引入eventBus事件总线,并用一个p标签来显示传递过来的值

Vue2.0子同级组件之间数据交互方法

1、我们在mounted中,监听了userDefinedEvent,并把传递过来的字符串参数传递给了$on监听器的回调函数

2、mounted:是一个Vue生命周期中的钩子函数,简单点说就类似于jQuery的ready,Vue会在文档加载完毕后调用mounted函数。

3、$on:监听当前实例上的自定义事件(此处当前实例为bus)。事件可以由$emit触发,回调函数会接收所有传入事件触发函数($emit)的额外参数。

四、在父组件中,注册这两个组件,并添加这两个组件的标签

Vue2.0子同级组件之间数据交互方法

保存所有修改的文件,然后打开浏览器窗口,内容如下(css请自行处理)

Vue2.0子同级组件之间数据交互方法 

点击向组件传值按钮,我们可以看到传值成功

Vue2.0子同级组件之间数据交互方法 

总结:

1、创建一个事件总线,例如demo中的eventBus,用它作为通信桥梁

2、在需要传值的组件中用bus.$emit触发一个自定义事件,并传递参数

3、在需要接收数据的组件中用bus.$on监听自定义事件,并在回调函数中处理传递过来的参数

另外:

1、兄弟组件之间与父子组件之间的数据交互,两者相比较,兄弟组件之间的通信其实和子组件向父组件传值有些类似,其实他们的通信原理都是相同的,例如子向父传值也是$emit和$on的形式,只是没有eventBus,但若我们仔细想想,此时父组件其实就充当了bus这个事件总线的角色。

2、这种用一个Vue实例来作为中央事件总线来管理组件通信的方法只适用于通信需求简单一点的项目,对于更复杂的情况,Vue也有提供更复杂的状态管理模式Vuex来进行处理。

以上这篇Vue2.0子同级组件之间数据交互方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
鼠标滚轮控制网页横向移动实现思路
Mar 22 Javascript
javascript中clipboardData对象用法详解
May 13 Javascript
javascript经典特效分享 手风琴、轮播图、图片滑动
Sep 14 Javascript
AngularJs实现聊天列表实时刷新功能
Jun 15 Javascript
深入理解vue.js中的v-if和v-show
Jun 22 Javascript
使用cookie绕过验证码登录的实现代码
Oct 12 Javascript
bootstrap table支持高度百分比的实例代码
Feb 28 Javascript
Webpack的dll功能使用
Jun 28 Javascript
vue监听对象及对象属性问题
Aug 20 Javascript
浅入深出Vue之组件使用
Jul 11 Javascript
js中的this的指向问题详解
Aug 29 Javascript
JavaScript冒泡算法原理与实现方法深入理解
Jun 04 Javascript
bootstrap table支持高度百分比的实例代码
Feb 28 #Javascript
vue 2.x 中axios 封装的get 和post方法
Feb 28 #Javascript
浅析node应用的timing-attack安全漏洞
Feb 28 #Javascript
vue组件传递对象中实现单向绑定的示例
Feb 28 #Javascript
在Vue组件中使用 TypeScript的方法
Feb 28 #Javascript
React组件中的this的具体使用
Feb 28 #Javascript
浅谈Vue网络请求之interceptors实际应用
Feb 28 #Javascript
You might like
浅析PHP7的多进程及实例源码
2019/04/14 PHP
javascript时区函数介绍
2012/09/14 Javascript
JavaScript 用Node.js写Shell脚本[译]
2012/09/20 Javascript
js切换div css注意的细节
2012/12/10 Javascript
js+css实现的简单易用兼容好的分页
2013/12/30 Javascript
jQuery CSS()方法改变现有的CSS样式
2014/08/20 Javascript
javascript快速排序算法详解
2014/09/17 Javascript
JavaScript lastIndexOf方法入门实例(计算指定字符在字符串中最后一次出现的位置)
2014/10/17 Javascript
Javascript window对象详解
2014/11/12 Javascript
jQuery插件zoom实现图片全屏放大弹出层特效
2015/04/15 Javascript
解决jQuery ajax请求在IE6中莫名中断的问题
2016/06/20 Javascript
JS实现动画兼容性的transition和transform实例分析
2016/12/13 Javascript
详解jQuery停止动画——stop()方法的使用
2016/12/14 Javascript
JavaScript插件Tab选项卡效果
2017/11/14 Javascript
Vue 菜单栏点击切换单个class(高亮)的方法
2018/08/22 Javascript
使用webpack搭建vue环境的教程详解
2019/12/31 Javascript
零基础写python爬虫之urllib2使用指南
2014/11/05 Python
Python导出数据到Excel可读取的CSV文件的方法
2015/05/12 Python
Python基于pygame实现的弹力球效果(附源码)
2015/11/11 Python
Python使用SocketServer模块编写基本服务器程序的教程
2016/07/12 Python
wx.CheckBox创建复选框控件并响应鼠标点击事件
2018/04/25 Python
pandas删除指定行详解
2019/04/04 Python
Python实现将HTML转成PDF的方法分析
2019/05/04 Python
Python Flask 搭建微信小程序后台详解
2019/05/06 Python
python中sort和sorted排序的实例方法
2019/08/26 Python
Python绘制热力图示例
2019/09/27 Python
python保留格式汇总各部门excel内容的实现思路
2020/06/01 Python
Python爬虫headers处理及网络超时问题解决方案
2020/06/19 Python
python定义具名元组实例操作
2021/02/28 Python
基于html5 canvas做批改作业的小插件
2020/05/20 HTML / CSS
药剂学专业应届生自荐信
2013/09/29 职场文书
酒店总经理助理职责
2014/02/12 职场文书
技术员岗位职责范本
2015/04/11 职场文书
openstack中的rpc远程调用的方法
2021/07/09 Python
Python循环之while无限迭代
2022/04/30 Python
mysqldump进行数据备份详解
2022/07/15 MySQL