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 相关文章推荐
JavaScript根据数据生成百分比图和柱状图的实例代码
Jul 14 Javascript
用Jquery.load载入页面实现局部刷新
Jan 22 Javascript
jQuery悬停文字提示框插件jquery.tooltipster.js用法示例【附demo源码下载】
Jul 19 Javascript
Bootstrap表单控件学习使用
Mar 07 Javascript
bootstrap手风琴折叠示例代码分享
May 22 Javascript
vue页面使用阿里oss上传功能的实例(一)
Aug 09 Javascript
vue组件父子间通信之综合练习(聊天室)
Nov 07 Javascript
Vue中computed、methods与watch的区别总结
Apr 10 Javascript
微信公众平台 客服接口发消息的实现代码(Java接口开发)
Apr 17 Javascript
elementUI 动态生成几行几列的方法示例
Jul 11 Javascript
基于VSCode调试网页JavaScript代码过程详解
Jul 20 Javascript
解决vue elementUI 使用el-select 时 change事件的触发问题
Nov 17 Vue.js
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
用javascript实现兼容IE7的类库 IE7_0_9.zip提供下载
2007/08/08 Javascript
JQuery UI DatePicker中z-index默认为1的解决办法
2010/09/28 Javascript
javascript hashtable 修正版 下载
2010/12/30 Javascript
用html5 js实现点击一个按钮达到浏览器全屏效果
2014/05/28 Javascript
jQuery的缓存机制浅析
2014/06/07 Javascript
Window.Open如何在同一个标签页打开
2014/06/20 Javascript
jquery中EasyUI使用技巧小结
2015/02/10 Javascript
jQuery向后台传入json格式数据的方法
2015/02/13 Javascript
js使用setTimeout实现定时炸弹的方法
2015/04/10 Javascript
详解Wondows下Node.js使用MongoDB的环境配置
2016/03/01 Javascript
AngularJS ng-blur 指令详解及简单实例
2016/07/30 Javascript
AngularJS控制器之间的通信方式详解
2016/11/03 Javascript
详解vue事件对象、冒泡、阻止默认行为
2017/03/20 Javascript
使用 NodeJS+Express 开发服务端的简单介绍
2017/04/07 NodeJs
JavaScript获取tr td 的三种方式全面总结(推荐)
2017/08/15 Javascript
jQuery+datatables插件实现ajax加载数据与增删改查功能示例
2018/04/17 jQuery
详解基于vue-cli3.0如何构建功能完善的前端架子
2018/10/09 Javascript
微信JS-SDK updateAppMessageShareData安卓不能自定义分享详解
2019/03/29 Javascript
koa2 用户注册、登录校验与加盐加密的实现方法
2019/07/22 Javascript
零基础写python爬虫之urllib2中的两个重要概念:Openers和Handlers
2014/11/05 Python
python监控网站运行异常并发送邮件的方法
2015/03/13 Python
python安装与使用redis的方法
2016/04/19 Python
python+matplotlib绘制旋转椭圆实例代码
2018/01/12 Python
python 制作自定义包并安装到系统目录的方法
2018/10/27 Python
python使用yield压平嵌套字典的超简单方法
2019/11/02 Python
python实现监控阿里云账户余额功能
2019/12/16 Python
请描述一下”is a”关系和”has a”关系
2015/02/03 面试题
EJB timer的种类
2014/10/28 面试题
高中生学习生活的自我评价
2013/10/09 职场文书
银行实习自我鉴定
2013/10/12 职场文书
空中乘务员岗位职责
2014/03/08 职场文书
文秘专业应届生求职信
2014/05/26 职场文书
企业开业庆典答谢词
2015/01/20 职场文书
同学聚会感言一句话
2015/07/30 职场文书
团支部书记竞选稿
2015/11/21 职场文书
JavaScript利用html5新方法操作元素类名详解
2021/11/27 Javascript