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 相关文章推荐
[原创]图片分页查看
Aug 28 Javascript
用正则xmlHttp实现的偷(转)
Jan 22 Javascript
js 为label标签和div标签赋值的方法
Aug 08 Javascript
可兼容IE的获取及设置cookie的jquery.cookie函数方法
Sep 02 Javascript
Highcharts使用简例及异步动态读取数据
Dec 30 Javascript
JavaScript检测原始值、引用值、属性
Jun 20 Javascript
微信小程序 刷新上拉下拉不会断详细介绍
May 11 Javascript
微信小程序wx.uploadfile 本地文件转base64的实现代码
Jun 28 Javascript
vue 解决异步数据更新问题
Oct 29 Javascript
理解Proxy及使用Proxy实现vue数据双向绑定操作
Jul 18 Javascript
用JavaScript实现贪吃蛇游戏
Oct 23 Javascript
微信小程序实现电影App导航和轮播
Nov 30 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 什么是PEAR?(第二篇)
2009/03/19 PHP
php页面函数设置超时限制的方法
2014/12/01 PHP
php简单图像创建入门实例
2015/06/10 PHP
PHP简单读取PDF页数的实现方法
2016/07/21 PHP
php+mysql实现的无限分类方法类定义与使用示例
2020/05/27 PHP
JavaScript中实现块作用域的方法
2010/04/01 Javascript
javascript 从if else 到 switch case 再到抽象
2010/07/17 Javascript
javascript去掉前后空格的实例
2013/11/07 Javascript
Jquery节点遍历next与nextAll方法使用示例
2014/07/22 Javascript
JavaScript常用标签和方法总结
2015/09/01 Javascript
jQuery实现的鼠标滑过弹出放大图片特效
2016/01/08 Javascript
详解Jquery Easyui的验证扩展
2017/01/09 Javascript
[js高手之路]图解javascript的原型(prototype)对象,原型链实例
2017/08/28 Javascript
基于Bootstrap框架菜鸟入门教程(推荐)
2017/09/17 Javascript
探索JavaScript中私有成员的相关知识
2019/06/13 Javascript
如何构建一个Vue插件并生成npm包
2020/10/26 Javascript
vuex页面刷新导致数据丢失的解决方案
2020/12/10 Vue.js
零基础学Python(一)Python环境安装
2014/08/20 Python
python使用电子邮件模块smtplib的方法
2016/08/28 Python
使用实现XlsxWriter创建Excel文件并编辑
2018/05/04 Python
儿童编程python入门
2018/05/08 Python
对Python 窗体(tkinter)树状数据(Treeview)详解
2018/10/11 Python
pytorch+lstm实现的pos示例
2020/01/14 Python
Python 中的函数装饰器和闭包详解
2021/02/06 Python
美国电视购物:QVC
2017/02/06 全球购物
日本最大的购物网站乐天市场国际版:Rakuten Global Market(支持中文)
2020/02/03 全球购物
俄罗斯卫浴采暖及维修用品超级市场:Dkrussia
2020/05/12 全球购物
班主任评语大全
2014/04/26 职场文书
公司担保书格式范文
2014/05/12 职场文书
个人股份转让协议书范本
2014/10/26 职场文书
个人总结格式范文
2015/03/09 职场文书
语文教师求职信范文
2015/03/20 职场文书
会议新闻稿
2015/07/17 职场文书
党风廉政建设心得体会
2019/05/21 职场文书
详解Java实践之抽象工厂模式
2021/06/18 Java/Android
详解Alibaba Java诊断工具Arthas查看Dubbo动态代理类
2022/04/08 Java/Android