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实现unicode和字符的互相转换
Jul 18 Javascript
JavaScript.The.Good.Parts阅读笔记(一)假值与===运算符
Nov 16 Javascript
Jquery工作常用实例 使用AJAX使网页进行异步更新
Jul 26 Javascript
Jquery操作下拉框(DropDownList)实现取值赋值
Aug 13 Javascript
jquery中的常用事件bind、hover、toggle等示例介绍
Jul 21 Javascript
js制作带有遮罩弹出层实现登录注册表单特效代码分享
Sep 05 Javascript
Javascript BOM学习小结(六)
Nov 26 Javascript
jQuery.Form实现Ajax上传文件同时设置headers的方法
Jun 26 jQuery
在vue中使用v-bind:class的选项卡方法
Sep 27 Javascript
vue实现分页栏效果
Jun 28 Javascript
Vue实现点击显示不同图片的效果
Aug 10 Javascript
JavaScript在web自动化测试中的作用示例详解
Aug 25 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中使用灵巧的体系结构
2006/10/09 PHP
用PHP ob_start()控制浏览器cache、生成html实现代码
2010/02/16 PHP
php中将汉字转换成拼音的函数代码
2012/09/08 PHP
PHP二维数组排序的3种方法和自定义函数分享
2014/04/09 PHP
php操作xml入门之xml基本介绍及xml标签元素
2015/01/23 PHP
简单谈谈PHP中的trait
2017/02/25 PHP
centos下file_put_contents()无法写入文件的原因及解决方法
2017/04/01 PHP
如何利用PHP实现上传图片功能详解
2020/09/24 PHP
jQuery获得document和window对象宽度和高度的方法
2015/03/25 Javascript
JS模拟键盘打字效果的方法
2015/08/05 Javascript
JS制作图形验证码实现代码
2020/10/19 Javascript
详解Vue方法与事件
2017/03/09 Javascript
ES6中的rest参数与扩展运算符详解
2017/07/18 Javascript
Node.js使用Angular简单示例
2018/05/11 Javascript
vue router 配置路由的方法
2018/07/26 Javascript
vue打包使用Nginx代理解决跨域问题
2018/08/27 Javascript
原生Vue 实现右键菜单组件功能
2019/12/16 Javascript
基于vue-cli3+typescript的tsx开发模板搭建过程分享
2020/02/28 Javascript
JS数组转字符串实现方法解析
2020/09/04 Javascript
python文件操作之目录遍历实例分析
2015/05/20 Python
Python使用爬虫猜密码
2016/02/19 Python
Android模拟器无法启动,报错:Cannot set up guest memory ‘android_arm’ Invalid argument的解决方法
2016/07/01 Python
Python中第三方库Requests库的高级用法详解
2017/03/12 Python
Python实现查看系统启动项功能示例
2018/05/10 Python
python调试神器PySnooper的使用
2019/07/03 Python
Python实时监控网站浏览记录实现过程详解
2020/07/14 Python
python爬虫要用到的库总结
2020/07/28 Python
Python日志打印里logging.getLogger源码分析详解
2021/01/17 Python
卡西欧B级产品官方网站:Casio Outlet
2018/05/22 全球购物
汉米尔顿手表官网:Hamilton
2020/09/13 全球购物
说一下mysql, oracle等常见数据库的分页实现方案
2012/09/29 面试题
公司应聘求职信
2014/06/21 职场文书
公司合作协议范文
2014/10/01 职场文书
2015年医务科工作总结范文
2015/05/26 职场文书
教导处教学工作总结
2015/08/12 职场文书
Java如何实现树的同构?
2021/06/22 Java/Android