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实现的WEB页面跳转以及页面间传值方法
May 13 Javascript
JavaScript实现仿网易通行证表单验证
May 25 Javascript
jQuery绑定事件的几种实现方式
May 09 Javascript
BootStrap的alert提示框的关闭后再显示怎么解决
May 17 Javascript
Vue获取DOM元素样式和样式更改示例
Mar 07 Javascript
zTree树形插件异步加载方法详解
Jun 14 Javascript
jQuery dateRangePicker插件使用方法详解
Jul 28 jQuery
详解用Node.js实现Restful风格webservice
Sep 29 Javascript
Vuex 进阶之模块化组织详解
Jan 12 Javascript
详解angular2 控制视图的封装模式
Dec 27 Javascript
Bootstrap table 实现树形表格联动选中联动取消功能
Sep 30 Javascript
React学习之JSX与react事件实例分析
Jan 06 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检查日期函数checkdate用法实例
2015/03/19 PHP
Zend Framework入门教程之Zend_View组件用法示例
2016/12/09 PHP
Laravel中Facade的加载过程与原理详解
2017/09/22 PHP
PHP+JS实现的实时搜索提示功能
2018/03/13 PHP
PHP反射学习入门示例
2019/06/14 PHP
jQuery初学:find()方法及children方法的区别分析
2011/01/31 Javascript
基于jquery的点击链接插入链接内容的代码
2012/07/31 Javascript
onkeypress字符按键兼容所有浏览器使用介绍
2013/04/24 Javascript
gridpanel动态加载数据的实例代码
2013/07/18 Javascript
jQuery实现响应鼠标背景变化的动态菜单效果代码
2015/08/27 Javascript
jQuery简单实现两级下拉菜单效果代码
2015/09/15 Javascript
微信小程序 label 组件详解及简单实例
2017/01/10 Javascript
javascript基础知识之html5轮播图实例讲解(44)
2017/02/17 Javascript
JS+CSS实现下拉刷新/上拉加载插件
2017/03/31 Javascript
详解JS数组Reduce()方法详解及高级技巧
2017/08/18 Javascript
[00:10]DOTA2全国高校联赛 以DOTA2会友
2018/05/30 DOTA
python中日期和时间格式化输出的方法小结
2015/03/19 Python
Python中的zipfile模块使用详解
2015/06/25 Python
详解tensorflow载入数据的三种方式
2018/04/24 Python
Python多线程编程之多线程加锁操作示例
2018/09/06 Python
如何在Django中设置定时任务的方法示例
2019/01/18 Python
如何定义TensorFlow输入节点
2020/01/23 Python
解决django接口无法通过ip进行访问的问题
2020/03/27 Python
css3 实现元素弧线运动的示例代码
2020/04/24 HTML / CSS
CSS3 实现的火焰动画
2020/12/07 HTML / CSS
英国精品买手店:Browns Fashion
2016/09/29 全球购物
全球最大运动品牌的男装、女装和童装官方库存商:A&A Sports
2021/01/17 全球购物
机械设计及其自动化专业推荐信
2013/10/31 职场文书
函授自我鉴定
2013/11/06 职场文书
大学生写自荐信的技巧
2014/01/08 职场文书
2014教师党员自我评议总结
2014/09/19 职场文书
2014县政府领导班子三严三实对照检查材料思想汇报
2014/09/26 职场文书
工会文体活动总结
2015/05/07 职场文书
投诉书范文
2015/07/02 职场文书
IDEA使用SpringAssistant插件创建SpringCloud项目
2021/06/23 Java/Android
MYSQL常用函数介绍
2022/05/05 MySQL