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压缩利器
Feb 20 Javascript
Add a Table to a Word Document
Jun 15 Javascript
js 异步处理进度条
Apr 01 Javascript
jquery 学习之二 属性(html()与html(val))
Nov 25 Javascript
JQuery通过Ajax提交表单并返回结果
Jul 31 Javascript
JQuery实现动态表格点击按钮表格增加一行
Aug 24 Javascript
纯css下拉菜单 无需js
Aug 15 Javascript
Angularjs实现分页和分页算法的示例代码
Dec 23 Javascript
关于HTML5的data-*自定义属性的总结
May 05 Javascript
vue-router 前端路由之路由传值的方式详解
Apr 30 Javascript
vuex state中的数组变化监听实例
Nov 06 Javascript
解决Vue在Tomcat8下部署页面不加载的问题
Nov 12 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
Content-type 的说明
2006/10/09 PHP
处理php自动反斜杠的函数代码
2010/01/05 PHP
PHP FOR MYSQL 代码生成助手(根据Mysql里的字段自动生成类文件的)
2011/07/23 PHP
smarty 缓存控制前的页面静态化原理
2013/03/15 PHP
phpcms模块开发之swfupload的使用介绍
2013/04/28 PHP
基于php实现七牛抓取远程图片
2015/12/01 PHP
php7新特性的理解和比较总结
2019/04/14 PHP
PHP实现腾讯短网址生成api接口实例
2020/12/08 PHP
怎么用javascript进行拖拽
2006/07/20 Javascript
js/jquery获取浏览器窗口可视区域高度和宽度以及滚动条高度实现代码
2012/12/17 Javascript
Jquery刷新页面背景图片随机变换的实现方法
2013/03/15 Javascript
使用JQuery实现智能表单验证功能
2016/03/08 Javascript
3kb jQuery代码搞定各种树形选择的实现方法
2016/06/10 Javascript
Bootstrap模态框(modal)垂直居中的实例代码
2016/08/18 Javascript
微信小程序实现滴滴导航tab切换效果
2018/07/24 Javascript
vue-image-crop基于Vue的移动端图片裁剪组件示例
2018/08/28 Javascript
详解微信UnionID作用
2019/05/15 Javascript
微信小程序实现搜索指定景点周边美食、酒店
2019/05/18 Javascript
微信小程序修改数组长度的问题的解决
2019/12/17 Javascript
koa中间件核心(koa-compose)源码解读分析
2020/06/15 Javascript
Python之批量创建文件的实例讲解
2018/05/10 Python
Python实现登陆文件验证方法
2018/10/06 Python
Python实现Linux监控的方法
2019/05/16 Python
Python 的AES加密与解密实现
2019/07/09 Python
Python实现一个带权无回置随机抽选函数的方法
2019/07/24 Python
Python 操作 ElasticSearch的完整代码
2019/08/04 Python
如何在Cloud Studio上执行Python代码?
2019/08/09 Python
Python一键安装全部依赖包的方法
2019/08/12 Python
Python 如何创建一个简单的REST接口
2020/07/30 Python
利用HTML5画出一个坦克的形状具体实现代码
2013/06/20 HTML / CSS
HTML5通过调用canvas对象的getContext()方法来获取绘图环境
2014/06/23 HTML / CSS
医学生求职自荐信
2013/10/25 职场文书
化工专业个人的求职信范文
2013/11/28 职场文书
文明寄语大全
2014/04/11 职场文书
SpringBoot系列之MongoDB Aggregations用法详解
2022/02/12 MongoDB
「月刊Action」2022年5月号封面公开
2022/03/21 日漫