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 相关文章推荐
js 判断浏览器类型 去全角、半角空格 自动关闭当前窗口
Apr 10 Javascript
IE6图片加载的一个BUG解决方法
Jul 13 Javascript
基于jquery的15款幻灯片插件
Apr 10 Javascript
jQuery焦点图切换特效插件封装实例
Aug 18 Javascript
使用JavaScript进行进制转换将字符串转换为十进制
Sep 21 Javascript
DIV随滚动条滚动而滚动的实现代码【推荐】
Apr 12 Javascript
Bootstrap Metronic完全响应式管理模板学习笔记
Jul 08 Javascript
JS实现的数字格式化功能示例
Feb 10 Javascript
微信小程序 登录的简单实现
Apr 19 Javascript
原生JS实现轮播图效果
Oct 12 Javascript
Node.js API详解之 string_decoder用法实例分析
Apr 29 Javascript
JS寄快递地址智能解析的实现代码
Jul 16 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中的登陆login
2007/01/18 PHP
PHP 简单日历实现代码
2009/10/28 PHP
十幅图告诉你什么是PHP引用
2015/02/22 PHP
php基于curl重写file_get_contents函数实例
2016/11/08 PHP
javascript 闭包疑问
2010/12/30 Javascript
基于jquery的禁用右键、文本选择功能、复制按键的实现代码
2013/08/27 Javascript
让jQuery与其他JavaScript库并存避免冲突的方法
2013/12/23 Javascript
鼠标经过tr时,改变tr当前背景颜色
2014/01/13 Javascript
jquery缓动swing liner控制动画过程不同时刻的速度
2014/05/29 Javascript
jquery实现转盘抽奖功能
2017/01/06 Javascript
Express + Session 实现登录验证功能
2017/09/08 Javascript
手把手教你写一个微信小程序(推荐)
2018/10/17 Javascript
nodejs实现用户登录路由功能
2019/05/22 NodeJs
Vue项目使用localStorage+Vuex保存用户登录信息
2019/05/27 Javascript
vue中filters 传入两个参数 / 使用两个filters的实现方法
2019/07/15 Javascript
Vue 图片压缩并上传至服务器功能
2020/01/15 Javascript
Vue父子之间值传递的实例教程
2020/07/02 Javascript
详解VUE中的插值( Interpolation)语法
2020/10/18 Javascript
el-table表头根据内容自适应完美解决表头错位和固定列错位
2021/01/07 Javascript
使用python检测手机QQ在线状态的脚本代码
2013/02/10 Python
Python Property属性的2种用法
2015/06/21 Python
Python使用multiprocessing实现一个最简单的分布式作业调度系统
2016/03/14 Python
Python实现自动登录百度空间的方法
2017/06/10 Python
python跳过第一行快速读取文件内容的实例
2018/07/12 Python
pandas使用apply多列生成一列数据的实例
2018/11/28 Python
Django 静态文件配置过程详解
2019/07/23 Python
python tkinter实现彩球碰撞屏保
2019/07/30 Python
keras获得某一层或者某层权重的输出实例
2020/01/24 Python
python实现扫雷游戏的示例
2020/10/20 Python
python pygame 愤怒的小鸟游戏示例代码
2021/02/25 Python
高分子材料个人求职信范文
2013/09/25 职场文书
大学生档案自我鉴定(2篇)
2014/10/14 职场文书
2014年新教师工作总结
2014/11/08 职场文书
Mysql中where与on的区别及何时使用详析
2021/08/04 MySQL
聊聊SpringBoot自动装配的魔力
2021/11/17 Java/Android
WCG2010 星际争霸决赛 Flash vs Goojila 1 星际经典比赛回顾
2022/04/01 星际争霸