1.父组件向子组件传输数据:自定义属性

  1. 1 //父组件
  2. 2 <Son :msg="message" :user="userinfo"></Son>
  3. 3
  4. 4 data(){
  5. 5 return{
  6. 6 message: 'hello vue.js',
  7. 7 userinfo: { name: 'zs', age: 20 }
  8. 8 }
  9. 9 }
  1. //子组件
  2. <template>
  3. <div>
  4. <h3>Son 组件</h3>
  5. <p>message的值是: {{ msg }}</p>
  6. <p>user的值是: {{ user }}</p>
  7. </div>
  8. </template>
  9.  
  10. props: ['msg', 'user']

子组件在父组件注册后,通过v-bind将data中所存储的数据绑定到<Son>中;

在子组件中通过props接收父组件绑定的值,再将其渲染,完成数据传输。


2.子组件向父组件传输数据:自定义事件

  1. //子组件 Son
  2. export default {
  3. data() {
  4. return {
  5. count: 0,
  6. };
  7. },
  8. methods: {
  9. add() {
  10. this.count++;
  11. //修改数据时,通过 $emit() 触发自定义时间,把自增结果传给父组件
  12. this.$emit("numchange", this.count);
  13. },
  14. },
  15. }
  1. //父组件
  2. <Son @numchange="getNewCount"></Son>
  3.  
  4. export default {
  5. data() {
  6. return {
  7. countFromSon: 0,
  8. };
  9. },
  10. methods: {
  11. //获取子组件传递过来的数据
  12. getNewCount(val) {
  13. this.countFromSon = val;
  14. },
  15. },
  16. };

先在父组件 <Son> 中绑定一个自定义事件 numchange ,并在事件中写一个方法 getNewCount ,该方法是为了接收所需传参数并将其赋值给指定数据;

在子组件中通过add()方法中的 $emit 触发自定义事件 numchange ,并向其传入实参即父组件想要向子组件所传递的参数 this.count,this.count即是形参val的实参,将其赋值给父组件中的 countFromSon


3.兄弟组件之间的传输数据:EventBus

  1. //兄弟组件A
  2. import bus from './eventBus.js'
  3.  
  4. export default {
  5. data() {
  6. return {
  7. str: "阿巴阿巴",
  8. };
  9. },
  10. methods: {
  11. sendMsg(){
  12. //通过eventBus发送数据
  13. bus.$emit("share", this.str);
  14. }
  15. }
  1. //eventBus.js
  2. import Vue from 'vue'
  3.  
  4. //向外共享Vue的实例对象
  5. export default new Vue()
  1. //兄弟组件B
  2. //1.导入 eventBus 模块
  3. import bus from "./eventBus.js";
  4.  
  5. export default {
  6. data() {
  7. return {
  8. msgFromLeft: "",
  9. };
  10. },
  11. created() {
  12. //2.给bus绑定自定义事件
  13. bus.$on("share", (val) => {
  14. this.msgFromLeft = val;
  15. });
  16. },
  17. };

1.初始化 EventBus 创建 eventBus.js,向外共享Vue实例对象,并在兄弟组件A和B中导入 eventBus.js

2.在作为数据发送方的 兄弟组件A 中,在 sendMsg 方法用$emit触发自定义事件share,将this.msg数据发送出去

3.在数据接收方 兄弟组件B ,通过给bus绑定自定义事件 share 接收数据并将其赋值给 msgFromLeft中

Vue组件间的数据传输的更多相关文章

  1. 【Android开发日记】之入门篇(十二)——Android组件间的数据传输

    组件我们有了,那么我们缺少一个组件之间传递信息的渠道.利用Intent做载体,这是一个王道的做法.还有呢,可以利用文件系统来做数据共享.也可以使用Application设置全局数据,利用组件来进行控制 ...

  2. Vue 组件间传值

    前言 Vue 作为现在比较火的框架之一,相信您在使用的过程中,也会遇到组件间传值的情况,本文将讲解几种 Vue 组件间传值的几种方法,跟着小编一起来学习一下吧! 实现 注意: 学习本文,需要您对 Vu ...

  3. vue组件间通信六种方式(完整版)

    本文总结了vue组件间通信的几种方式,如props. $emit/ $on.vuex. $parent / $children. $attrs/ $listeners和provide/inject,以 ...

  4. Vue组件间通信-Vuex

    上回说到Vue组件间通讯,最后留了一个彩蛋~~~Vuex.Vuex是另一种组件通讯的方法,这节来说说Vuex(store仓库). 首先Vuex需要安装,安装的方式有很多,在这里就不一一细说了.我是通过 ...

  5. Vue组件间通信6种方式

    摘要: 总有一款合适的通信方式. 作者:浪里行舟 Fundebug经授权转载,版权归原作者所有. 前言 组件是 vue.js 最强大的功能之一,而组件实例的作用域是相互独立的,这就意味着不同组件之间的 ...

  6. webpack+vue 组件间传参(单一事件中心管理组件通信--$root),如果有路由的话会失效

    先给一个例子: <body> <div id="box"> <com-a></com-a> <com-b></co ...

  7. vue 组件间的通信

    (1)props:用于父组件向子组件传递消息 使用方法: 在父组件中,使用子组件时,<Child v-bind:data="data"/>,通过v-bind把子组件需要 ...

  8. vue组件间的通信

    组件的定义: 组件(Component)是 Vue.js 最强大的功能之一.组件可以扩展 HTML 元素,封装可重用的代码.在较高层面上,组件是自定义元素, Vue.js 的编译器为它添加特殊功能.v ...

  9. vue组件间通信

    组件间通信(父子,兄弟) 相关链接\组件通信http://www.cnblogs.com/xulei1992/p/6121974.html 学习链接Vue.js--60分钟快速入门http://www ...

随机推荐

  1. 07.SpringMVC之静态资源

    如何你的DispatcherServlet拦截 *.do这样的URL,就不存在访问不到静态资源的问题.如果你的DispatcherServlet拦截"/",拦截了所有的请求,同时对 ...

  2. LeetCoded第25题题解--K个一组翻转链表--java--链表

    链表 单链表:链表中的每个元素实际上是一个单独的对象,而所有对象都通过每个元素的引用字段链接在一起. 双链表:与单链表不同的是,双链表的每个节点都含有两个引用字段. 链表优点 灵活分配内存空间 能在O ...

  3. Java之Apache Commons-IO使用精讲

    Commons IO是针对开发IO流功能的工具类库.主要包括六个区域: 工具类--使用静态方法执行共同任务输入--用于InputStream和Reader实现输出--用于OutputStream和Wr ...

  4. Linux中Java开发常用的软件总结:

    开发工具下载: Tomcat下载:wget http://learning.happymmall.com/tomcat/apache-tomcat-7.0.73.tar.gzJDK下载: wget h ...

  5. 嵌入式Linux的启动过程

    1.了解 Linux 最初是由瑞典赫尔辛基大学的学生 Linus Torvalds在1991 年开发出来的,之后在 GNU的支持下,Linux 获得了巨大的发展.虽然 Linux 在桌面 PC 机上的 ...

  6. linux(1)------vmvear虚拟机安装linux

    1.VMvare14(个人下载,软件付费,自行解决) 2.CentOS下载           https://www.centos.org/download/    官方网址,后期会跳转本地镜像站 ...

  7. 关于RandomAccess

    package special; import java.io.IOException; import java.io.RandomAccessFile; /** * 随机访问流: * * 此类不属于 ...

  8. vue组件里不用的css还在搜索过滤来删除?试一下vue-clearcss吧!

    这篇文章其实是推广介绍我个人的npm工具库,但你不会后悔点进来的(应该吧...)vue-clearcss 为什么要用它? 一个vue文件在长期迭代中css会越来越冗余,它不像html和js那么好删除, ...

  9. centos7 ftp 拒绝连接

    2021-09-03 1. 问题描述 刚才在重新搭建 ftp 服务器时,发现 ftp 拒绝连接,想起来我还没启动 vsftpd 服务,尝试启动却无法启动 vsftpd 服务 2. 解决方法 使用命令 ...

  10. MongoDB 常见问题 - 解决找不到 mongo、mongod 命令的问题

    问题背景 成功安装 MongoDB 后执行 Mongo.MongoD 显示找不到命令 解决方案 echo 'export PATH="/usr/local/opt/mongodb-commu ...