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 相关文章推荐
js中格式化日期时间型数据函数代码
Nov 08 Javascript
JavaScript子窗口ModalDialog中操作父窗口对像
Dec 11 Javascript
js日期时间补零的小例子
Mar 05 Javascript
Js,alert出现乱码问题的解决方法
Jun 19 Javascript
javaScript中slice函数用法实例分析
Jun 08 Javascript
JS实现仿QQ面板的手风琴效果折叠菜单代码
Sep 11 Javascript
js实现图片无缝滚动特效
Mar 19 Javascript
JavaScript学习笔记整理之引用类型
Jan 22 Javascript
详解jQuery简单的表格应用
Dec 16 Javascript
vue.js利用Object.defineProperty实现双向绑定
Mar 09 Javascript
解决vue更新路由router-view复用组件内容不刷新的问题
Nov 04 Javascript
vue动态加载SVG文件并修改节点数据的操作代码
Aug 17 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 静态变量的初始化
2009/11/15 PHP
PHP异步调用socket实现代码
2012/01/12 PHP
PHP实现将视频转成MP4并获取视频预览图的方法
2015/03/12 PHP
Yii操作数据库实现动态获取表名的方法
2016/03/29 PHP
Laravel框架在本地虚拟机快速安装的方法详解
2018/06/11 PHP
自己开发Dojo的建议框架
2008/09/24 Javascript
jQuery 1.5最新版本的改进细节分析
2011/01/19 Javascript
防止xss和sql注入:JS特殊字符过滤正则
2013/04/18 Javascript
javascript从右边截取指定字符串的三种实现方法
2013/11/29 Javascript
jQuery中:reset选择器用法实例
2015/01/04 Javascript
Bootstrap安装环境配置教程分享
2016/05/27 Javascript
JavaScript易错知识点整理
2016/12/05 Javascript
Angular.js 4.x中表单Template-Driven Forms详解
2017/04/25 Javascript
js canvas实现QQ拨打电话特效
2017/05/10 Javascript
vue实现弹框遮罩点击其他区域弹框关闭及v-if与v-show的区别介绍
2018/09/29 Javascript
小程序获取周围IBeacon设备的方法
2018/10/31 Javascript
JS实现购物车基本功能
2020/11/08 Javascript
windows如何把已安装的nodejs高版本降级为低版本(图文教程)
2020/12/14 NodeJs
[03:14]2014DOTA2西雅图国际邀请赛 EG战队巡礼
2014/07/07 DOTA
[01:19:11]Ti4 循环赛第二日 NaVi.us vs iG
2014/07/11 DOTA
Python中read()、readline()和readlines()三者间的区别和用法
2017/07/30 Python
Python使用pickle模块储存对象操作示例
2018/08/15 Python
Python 的AES加密与解密实现
2019/07/09 Python
基于Python3读写INI配置文件过程解析
2020/07/23 Python
python实现图像随机裁剪的示例代码
2020/12/10 Python
CSS3制作轮播图的一种方法
2019/11/11 HTML / CSS
英国男女奢华内衣和泳装购物网站:Figleaves
2017/01/28 全球购物
TUMI马来西亚官方网站:国际领先的高品质商旅箱包品牌
2018/04/26 全球购物
C#中有没有运算符重载?能否使用指针?
2014/05/05 面试题
访谈节目策划方案
2014/05/15 职场文书
投标保密承诺书
2014/05/19 职场文书
奖学金感谢信
2015/01/21 职场文书
《坐井观天》教学反思
2016/02/18 职场文书
导游词之苏州盘门景区
2019/11/12 职场文书
OpenCV-Python实现轮廓拟合
2021/06/08 Python
Java集成swagger文档组件
2021/06/28 Java/Android