vue2.0父子组件及非父子组件之间的通信方法


Posted in Javascript onJanuary 21, 2017

1.父组件传递数据给子组件

父组件数据如何传递给子组件呢?可以通过props属性来实现

父组件:

<parent>
  <child :child-msg="msg"></child>//这里必须要用 - 代替驼峰
</parent>
data(){
  return {
    msg: [1,2,3]
  };
}

子组件通过props来接收数据:

方式1:

props: ['childMsg']

方式2 :

props: {
  childMsg: Array //这样可以指定传入的类型,如果类型不对,会警告
}

方式3:

props: {
  childMsg: {
    type: Array,
    default: [0,0,0] //这样可以指定默认的值
  }
}

这样呢,就实现了父组件向子组件传递数据.

2.子组件与父组件通信

那么,如果子组件想要改变数据呢?这在vue中是不允许的,因为vue只允许单向数据传递,这时候我们可以通过触发事件来通知父组件改变数据,从而达到改变子组件数据的目的.

子组件:

<template>
  <div @click="up"></div>
</template>
methods: {
  up() {
    this.$emit('upup','hehe'); //主动触发upup方法,'hehe'为向父组件传递的数据
  }
}

父组件:

<div>
  <child @upup="change" :msg="msg"></child> //监听子组件触发的upup事件,然后调用change方法
</div>
methods: {
  change(msg) {
    this.msg = msg;
  }
}

3.非父子组件通信

如果2个组件不是父子组件那么如何通信呢?这时可以通过eventHub来实现通信.
所谓eventHub就是创建一个事件中心,相当于中转站,可以用它来传递事件和接收事件.

let Hub = new Vue(); //创建事件中心

组件1触发:

<div @click="eve"></div>
methods: {
  eve() {
    Hub.$emit('change','hehe'); //Hub触发事件
  }
}

组件2接收:

<div></div>
created() {
  Hub.$on('change', () => { //Hub接收事件
    this.msg = 'hehe';
  });
}

这样就实现了非父子组件之间的通信了.原理就是把Hub当作一个中转站!

以上所述是小编给大家介绍的vue2.0父子组件及非父子组件之间的通信方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
javascript中关于break,continue的特殊用法与介绍
May 24 Javascript
javascript中HTMLDOM操作详解
Dec 11 Javascript
jquery+css实现的红色线条横向二级菜单效果
Aug 22 Javascript
jQuery焦点图切换特效代码分享
Sep 15 Javascript
Node.js的Koa框架上手及MySQL操作指南
Jun 13 Javascript
关于动态生成dom绑定事件失效的原因及解决方法
Aug 06 Javascript
js模拟微博发布消息
Feb 23 Javascript
JavaScript如何获取到导航条中HTTP信息
Oct 10 Javascript
Vue iview-admin框架二级菜单改为三级菜单的方法
Jul 03 Javascript
Vue实现按钮级权限方案
Nov 21 Javascript
详解微信小程序入门从这里出发(登录注册、开发工具、文件及结构介绍)
Jul 21 Javascript
vue实现顶部菜单栏
Nov 08 Javascript
微信小程序 devtool隐藏的秘密
Jan 21 #Javascript
JS设置CSS样式的方式汇总
Jan 21 #Javascript
JS 实现 ajax 异步浏览器兼容问题
Jan 21 #Javascript
RequireJS 依赖关系的实例(推荐)
Jan 21 #Javascript
js操作浏览器的参数方法
Jan 21 #Javascript
JS实现图片高斯模糊切换效果的焦点图实例
Jan 21 #Javascript
js实现用户输入的小写字母自动转大写字母的方法
Jan 21 #Javascript
You might like
不用iconv库的gb2312与utf-8的互换函数
2006/10/09 PHP
深入解析PHP垃圾回收机制对内存泄露的处理
2013/06/14 PHP
php将日期格式转换成xx天前的格式
2015/04/16 PHP
PHP滚动日志的代码实现
2015/06/10 PHP
php获取本机真实IP地址实例代码
2016/03/31 PHP
PHP使用标准库spl实现的观察者模式示例
2018/08/04 PHP
PHP强制转化的形式整理
2020/05/22 PHP
通过实例解析PHP数据类型转换方法
2020/07/11 PHP
网页自动刷新,不产生嗒嗒声的一个解决方法
2007/03/27 Javascript
JS的反射问题
2010/04/07 Javascript
js实现从中间开始往上下展开网页窗口的方法
2015/03/02 Javascript
jQuery+PHP实现动态数字展示特效
2015/03/14 Javascript
AngularJS基础学习笔记之指令
2015/05/10 Javascript
微信js-sdk分享功能接口常用逻辑封装示例
2016/10/13 Javascript
深入理解Angularjs中$http.post与$.post
2017/05/19 Javascript
详解webpack运行Babel教程
2018/06/13 Javascript
在vue中实现给每个页面顶部设置title
2020/07/29 Javascript
vue axios封装httpjs,接口公用配置拦截操作
2020/08/11 Javascript
element-ui 弹窗组件封装的步骤
2021/01/22 Javascript
[05:41]2014DOTA2西雅图国际邀请赛 小组赛7月10日TOPPLAY
2014/07/10 DOTA
Python中Selenium模拟JQuery滑动解锁实例
2017/07/26 Python
python实现傅里叶级数展开的实现
2018/07/21 Python
解决python3 安装不了PIL的问题
2019/08/16 Python
Django获取应用下的所有models的例子
2019/08/30 Python
基于python实现微信好友数据分析(简单)
2020/02/16 Python
python中使用you-get库批量在线下载bilibili视频的教程
2020/03/10 Python
Virtualenv 搭建 Py项目运行环境的教程详解
2020/06/22 Python
您的健身减肥和健康饮食专家:vitafy
2017/06/06 全球购物
印度购物网站:TATA CLiQ
2017/11/23 全球购物
致接力运动员广播稿
2014/02/17 职场文书
硕士研究生求职自荐信范文
2014/03/11 职场文书
物业保安员岗位职责
2014/03/14 职场文书
党校学习心得体会范文
2014/09/09 职场文书
班主任远程培训研修日志
2015/11/13 职场文书
小学生法制教育心得体会
2016/01/14 职场文书
python OpenCV学习笔记
2021/03/31 Python