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之AJAX框架使用说明
Apr 24 Javascript
React Router基础使用
Jan 17 Javascript
canvas简单快速的实现知乎登录页背景效果
May 08 Javascript
兼容浏览器的js事件绑定函数(详解)
May 09 Javascript
BootStrap Table实现server分页序号连续显示功能(当前页从上一页的结束序号开始)
Sep 12 Javascript
彻底理解js面向对象之继承
Feb 04 Javascript
基于cropper.js封装vue实现在线图片裁剪组件功能
Mar 01 Javascript
Vue中 v-if/v-show/插值表达式导致闪现的原因及解决办法
Oct 12 Javascript
layui表格内放置图片,并点击放大的实例
Sep 10 Javascript
vue项目使用.env文件配置全局环境变量的方法
Oct 24 Javascript
vue实现图片上传到后台
Jun 29 Javascript
vue 实现上传组件
May 31 Vue.js
微信小程序 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
用文本文件制作留言板提示(下)
2006/10/09 PHP
php建立Ftp连接的方法
2015/03/07 PHP
php使用GD2绘制几何图形示例
2017/02/15 PHP
CutePsWheel javascript libary 控制输入文本框为可使用滚轮控制的js库
2010/02/07 Javascript
可插入图片的TEXT文本框
2013/12/27 Javascript
浅析Node在构建超媒体API中的作用
2014/07/30 Javascript
一个通过script自定义属性传递配置参数的方法
2014/09/15 Javascript
Javascript中的Callback方法浅析
2015/03/15 Javascript
ECharts仪表盘实例代码(附源码下载)
2016/02/18 Javascript
js老生常谈之this,constructor ,prototype全面解析
2016/04/05 Javascript
基于Bootstrap的后台管理面板 Bootstrap Metro Dashboard
2016/06/17 Javascript
js操作XML文件的实现方法兼容IE与FireFox
2016/06/25 Javascript
详解如何构建一个Angular6的第三方npm包
2018/09/07 Javascript
详解easyui 切换主题皮肤
2019/04/04 Javascript
vue新建项目并配置标准路由过程解析
2019/12/09 Javascript
Bootstrap简单实用的表单验证插件BootstrapValidator用法实例详解
2020/03/29 Javascript
[04:19]DOTA2完美大师赛第四天精彩集锦
2017/11/26 DOTA
python抓取京东价格分析京东商品价格走势
2014/01/09 Python
在Django的URLconf中使用命名组的方法
2015/07/18 Python
分享Python字符串关键点
2015/12/13 Python
Selenium控制浏览器常见操作示例
2018/08/13 Python
Pandas库之DataFrame使用的学习笔记
2019/06/21 Python
Python中and和or如何使用
2020/05/28 Python
纯CSS3实现绘制各种图形实现代码详细整理
2012/12/26 HTML / CSS
详解快速开发基于 HTML5 网络拓扑图应用
2018/01/08 HTML / CSS
Bonprix法国:时尚、鞋子、家居
2020/12/29 全球购物
个人求职简历的自我评价范文
2013/10/09 职场文书
关于廉洁的广播稿
2014/01/30 职场文书
通用自荐信范文
2014/03/14 职场文书
社区优秀志愿者先进事迹
2014/05/09 职场文书
旅游与环境专业求职信
2014/06/05 职场文书
财政局党的群众路线教育实践活动整改方案
2014/09/21 职场文书
区长工作作风个人整改措施
2014/10/01 职场文书
大学生个人总结范文
2015/02/15 职场文书
写给媳妇的检讨书
2015/05/06 职场文书
Nginx隐藏式跳转(浏览器URL跳转后保持不变)
2022/04/07 Servers