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中的运用上部
Nov 20 Javascript
js 面向对象的技术创建高级 Web 应用程序
Feb 25 Javascript
JS控制显示隐藏兼容问题(IE6、IE7、IE8)
Apr 01 Javascript
js 设置选中行的样式的实现代码
May 24 Javascript
js控制的遮罩层实例介绍
May 29 Javascript
JS高级调试技巧:捕获和分析 JavaScript Error详解
Mar 16 Javascript
JavaScript中property和attribute的区别详细介绍
Mar 03 Javascript
JavaScript获得url查询参数的方法
Jul 02 Javascript
跟我学习javascript的Date对象
Nov 19 Javascript
js省市县三级联动效果实例
Apr 15 Javascript
细说webpack源码之compile流程-rules参数处理技巧(2)
Dec 26 Javascript
在vue项目中引入highcharts图表的方法
Jan 21 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
php使用curl出现Expect:100-continue解决方法
2015/03/03 PHP
正确的PHP匹配UTF-8中文的正则表达式
2015/05/13 PHP
关于PHP文件的自动运行方法分析
2016/05/13 PHP
php解析非标准json、非规范json的方式实例
2020/12/10 PHP
php实现对短信验证码发送次数的限制实例讲解
2021/03/04 PHP
JS 打印界面的CSS居中代码适用所有浏览器
2014/03/19 Javascript
利用原生JavaScript获取元素样式只是获取而已
2014/10/08 Javascript
JS制作简单的三级联动
2015/03/18 Javascript
Javascript学习之谈谈JS的全局变量跟局部变量(推荐)
2016/08/28 Javascript
JS匿名函数和匿名自执行函数概念与用法分析
2018/03/16 Javascript
vue数据传递--我有特殊的实现技巧
2018/03/20 Javascript
egg.js的基本使用和调用数据库的方法示例
2019/05/18 Javascript
深入浅析ng-bootstrap 组件集中 tabset 组件的实现分析
2019/07/19 Javascript
利用JS响应式修改vue实现页面的input值
2019/09/02 Javascript
layer iframe 设置关闭按钮的方法
2019/09/12 Javascript
vue+axios实现post文件下载
2019/09/25 Javascript
js 实现碰撞检测的示例
2020/10/28 Javascript
[03:32]2014DOTA2西雅图邀请赛 CIS外卡赛赛前black专访
2014/07/09 DOTA
[50:59]2018DOTA2亚洲邀请赛 4.7 总决赛 LGD vs Mineski第四场
2018/04/10 DOTA
[01:04:09]DOTA2-DPC中国联赛 正赛 iG vs VG BO3 第二场 2月2日
2021/03/11 DOTA
Django返回json数据用法示例
2016/09/18 Python
django基础之数据库操作方法(详解)
2017/05/24 Python
Anaconda下配置python+opencv+contribx的实例讲解
2018/08/06 Python
对python条件表达式的四种实现方法小结
2019/01/30 Python
用python拟合等角螺线的实现示例
2019/12/27 Python
Python图像处理库PIL的ImageGrab模块介绍详解
2020/02/26 Python
Python如何创建装饰器时保留函数元信息
2020/08/07 Python
Elasticsearch py客户端库安装及使用方法解析
2020/09/14 Python
python通过函数名调用函数的几种场景
2020/09/23 Python
《黄山奇石》教学反思
2014/04/19 职场文书
2014年企业党支部工作总结
2014/12/04 职场文书
Python 如何安装Selenium
2021/05/06 Python
总结Python连接CS2000的详细步骤
2021/06/23 Python
MySQL提取JSON字段数据实现查询
2022/04/22 MySQL
nginx日志格式分析和修改
2022/04/28 Servers
Python测试框架pytest核心库pluggy详解
2022/08/05 Golang