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 相关文章推荐
jQuery 入门讲解1
Apr 15 Javascript
JS的replace方法介绍
Oct 20 Javascript
jQuery点击tr实现checkbox选中的方法
Mar 19 Javascript
解析jquery中的ajax缓存问题
Dec 19 Javascript
文本域中换行符的替换示例
Mar 04 Javascript
jQuery实现的多选框多级联动插件
May 02 Javascript
jQuery实现点击该行即可删除HTML表格行
Oct 17 Javascript
如何高效率去掉js数组中的重复项
Apr 12 Javascript
JavaScript之Canvas_动力节点Java学院整理
Jul 04 Javascript
微信小程序模板和模块化用法实例分析
Nov 28 Javascript
jQuery中each遍历的三种方法实例分析
Sep 07 jQuery
Node.js API详解之 zlib模块用法分析
May 19 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
php获取mysql数据库中的所有表名的代码
2011/04/23 PHP
支付宝支付开发――当面付条码支付和扫码支付实例
2016/11/04 PHP
从javascript语言本身谈项目实战
2006/12/27 Javascript
用jquery来定位
2007/02/20 Javascript
javascript之学会吝啬 精简代码
2010/04/25 Javascript
ajax上传时参数提交不更新等相关问题
2012/12/11 Javascript
jquery中文乱码的多种解决方法
2013/06/21 Javascript
js实现当复选框选择匿名登录时隐藏登录框效果
2015/08/14 Javascript
jQuery链式操作实例分析
2015/11/16 Javascript
jquery实现两边飘浮可关闭的对联广告
2015/11/27 Javascript
浅析Bootstrap验证控件的使用
2016/06/23 Javascript
javascript特效实现——当前时间和倒计时效果的简单实例
2016/07/20 Javascript
获取JS中网页各种高宽与位置的方法总结
2016/07/27 Javascript
AngularJs上传前预览图片的实例代码
2017/01/20 Javascript
微信小程序wx.getImageInfo()如何获取图片信息
2018/01/26 Javascript
简化vuex的状态管理方案的方法
2018/06/02 Javascript
JS实现的视频弹幕效果示例
2018/08/17 Javascript
node.js 模块和其下载资源的镜像设置的方法
2018/09/06 Javascript
基于webpack4.X从零搭建React脚手架的方法步骤
2018/12/23 Javascript
微信公众号H5之微信分享常见错误和问题(小结)
2019/11/14 Javascript
vue vant Area组件使用详解
2019/12/09 Javascript
JavaScript字符和ASCII实现互相转换
2020/06/03 Javascript
[47:43]Alliance vs KG 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/18 DOTA
使用Mixin设计模式进行Python编程的方法讲解
2016/06/21 Python
Python3.4实现远程控制电脑开关机
2018/02/22 Python
详解Python进阶之切片的误区与高级用法
2018/12/24 Python
python3字符串操作总结
2019/07/24 Python
用Python将Excel数据导入到SQL Server的例子
2019/08/24 Python
win10从零安装配置pytorch全过程图文详解
2020/05/08 Python
很酷的小工具和电子产品商城:GearBest
2016/11/19 全球购物
英国翻新电子产品购物网站:Tech Trade
2017/12/25 全球购物
什么是唯一索引
2015/07/05 面试题
工程质量承诺书
2014/03/27 职场文书
2014年度考核工作总结
2014/12/24 职场文书
运动会广播稿100字
2015/08/19 职场文书
收音机爱好者玩机13年,简评其使用过的19台收音机
2022/04/30 无线电