Vue组件间的数据传输
1.父组件向子组件传输数据:自定义属性
1 //父组件
2 <Son :msg="message" :user="userinfo"></Son>
3
4 data(){
5 return{
6 message: 'hello vue.js',
7 userinfo: { name: 'zs', age: 20 }
8 }
9 }
//子组件
<template>
<div>
<h3>Son 组件</h3>
<p>message的值是: {{ msg }}</p>
<p>user的值是: {{ user }}</p>
</div>
</template> props: ['msg', 'user']
子组件在父组件注册后,通过v-bind将data中所存储的数据绑定到<Son>中;
在子组件中通过props接收父组件绑定的值,再将其渲染,完成数据传输。
2.子组件向父组件传输数据:自定义事件
//子组件 Son
export default {
data() {
return {
count: 0,
};
},
methods: {
add() {
this.count++;
//修改数据时,通过 $emit() 触发自定义时间,把自增结果传给父组件
this.$emit("numchange", this.count);
},
},
}
//父组件
<Son @numchange="getNewCount"></Son> export default {
data() {
return {
countFromSon: 0,
};
},
methods: {
//获取子组件传递过来的数据
getNewCount(val) {
this.countFromSon = val;
},
},
};
先在父组件 <Son> 中绑定一个自定义事件 numchange ,并在事件中写一个方法 getNewCount ,该方法是为了接收所需传参数并将其赋值给指定数据;
在子组件中通过add()方法中的 $emit 触发自定义事件 numchange ,并向其传入实参即父组件想要向子组件所传递的参数 this.count,this.count即是形参val的实参,将其赋值给父组件中的 countFromSon
3.兄弟组件之间的传输数据:EventBus
//兄弟组件A
import bus from './eventBus.js' export default {
data() {
return {
str: "阿巴阿巴",
};
},
methods: {
sendMsg(){
//通过eventBus发送数据
bus.$emit("share", this.str);
}
}
//eventBus.js
import Vue from 'vue' //向外共享Vue的实例对象
export default new Vue()
//兄弟组件B
//1.导入 eventBus 模块
import bus from "./eventBus.js"; export default {
data() {
return {
msgFromLeft: "",
};
},
created() {
//2.给bus绑定自定义事件
bus.$on("share", (val) => {
this.msgFromLeft = val;
});
},
};
1.初始化 EventBus 创建 eventBus.js,向外共享Vue实例对象,并在兄弟组件A和B中导入 eventBus.js
2.在作为数据发送方的 兄弟组件A 中,在 sendMsg 方法用$emit触发自定义事件share,将this.msg数据发送出去
3.在数据接收方 兄弟组件B ,通过给bus绑定自定义事件 share 接收数据并将其赋值给 msgFromLeft中
Vue组件间的数据传输的更多相关文章
- 【Android开发日记】之入门篇(十二)——Android组件间的数据传输
组件我们有了,那么我们缺少一个组件之间传递信息的渠道.利用Intent做载体,这是一个王道的做法.还有呢,可以利用文件系统来做数据共享.也可以使用Application设置全局数据,利用组件来进行控制 ...
- Vue 组件间传值
前言 Vue 作为现在比较火的框架之一,相信您在使用的过程中,也会遇到组件间传值的情况,本文将讲解几种 Vue 组件间传值的几种方法,跟着小编一起来学习一下吧! 实现 注意: 学习本文,需要您对 Vu ...
- vue组件间通信六种方式(完整版)
本文总结了vue组件间通信的几种方式,如props. $emit/ $on.vuex. $parent / $children. $attrs/ $listeners和provide/inject,以 ...
- Vue组件间通信-Vuex
上回说到Vue组件间通讯,最后留了一个彩蛋~~~Vuex.Vuex是另一种组件通讯的方法,这节来说说Vuex(store仓库). 首先Vuex需要安装,安装的方式有很多,在这里就不一一细说了.我是通过 ...
- Vue组件间通信6种方式
摘要: 总有一款合适的通信方式. 作者:浪里行舟 Fundebug经授权转载,版权归原作者所有. 前言 组件是 vue.js 最强大的功能之一,而组件实例的作用域是相互独立的,这就意味着不同组件之间的 ...
- webpack+vue 组件间传参(单一事件中心管理组件通信--$root),如果有路由的话会失效
先给一个例子: <body> <div id="box"> <com-a></com-a> <com-b></co ...
- vue 组件间的通信
(1)props:用于父组件向子组件传递消息 使用方法: 在父组件中,使用子组件时,<Child v-bind:data="data"/>,通过v-bind把子组件需要 ...
- vue组件间的通信
组件的定义: 组件(Component)是 Vue.js 最强大的功能之一.组件可以扩展 HTML 元素,封装可重用的代码.在较高层面上,组件是自定义元素, Vue.js 的编译器为它添加特殊功能.v ...
- vue组件间通信
组件间通信(父子,兄弟) 相关链接\组件通信http://www.cnblogs.com/xulei1992/p/6121974.html 学习链接Vue.js--60分钟快速入门http://www ...
随机推荐
- 【java web】过滤器filter
一.过滤器简介 过滤器filter依赖于servlet容器 所谓过滤器顾名思义是用来过滤的,Java的过滤器能够为我们提供系统级别的过滤,也就是说,能过滤所有的web请求, 这一点,是拦截器无法做到的 ...
- 【java虚拟机】Java内存模型
作者:平凡希 原文地址:https://www.cnblogs.com/xiaoxi/p/7518259.html 一.什么是Java内存模型 Java虚拟机规范中试图定义一种Java内存模型(Jav ...
- spring boot集成pagehelper(两种方式)
当spring boot集成好mybatis时候需要进行分页,我们首先添加maven支持 <dependency> <groupId>com.github.pagehelper ...
- 栈(Stack)
特点: 栈最大的特点就是后进先出(LIFO).对于栈中的数据来说,所有操作都是在栈的顶部完成的,只可以查看栈顶部的元素,只能够向栈的顶部压入数据,也只能从栈的顶部弹出数据. 实现: 利用一个单链表来实 ...
- 关于Eclipse中使用Maven进行Install安装时候报错Perhaps you are running on a JRE rather than a JDK?解决办法
所遇到的问题: 详情报错: 英文描述: [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3. ...
- transient用法
1 import java.io.FileInputStream; 2 import java.io.FileNotFoundException; 3 import java.io.FileOutpu ...
- JDBC中的元数据——3.结果集元数据
package metadata; import java.sql.Connection; import java.sql.ParameterMetaData; import java.sql.Pre ...
- 媒体查询media query
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- 一、Rabbitmq的简单介绍
以下只是本人从零学习过程的整理 部分内容参考地址:https://www.cnblogs.com/ysocean/p/9240877.html 1.RabbitMQ的概念 RabbitMQ是实现了高级 ...
- JVM详解(四)——类加载过程
类加载过程 https://www.cnblogs.com/aqsaycode/p/14885023.html