vue组件间相互传值
一般vue的组件之间的传值分为:父组件传子组件,子组件传父组件,任意组件之间传值。
1.父组件传子组件:(父组件通过v-bind(可以缩写为 :)发送,子组件通过props接收)
//父组件中引入子组件B
<B v-bind:msg="msg"></B>import B from './B.vue'
data(){return{msg:'父组件给给子组件B的值'}
},
components:{B
}//子组件B,通过props接收,可以通过数组接收,也可以通过对象形式接收。
props:['msg']
或者
prop:{msg:{type:String, //数据的类型default:"", //设置数据默认值required:true //设置数据必填,如果没有传入,就会报错。}
}
注意:通过props接收的参数是只读的,不能修改。如果需要修改,则需要讲它赋值给自己data中的变量,再修改。
2.子组件传父组件:(使用自定义事件,实现传值)
子组件内:通过$emit发送。
//假如在sure方法中发送值:
data(){return{count:'10'}
},
methods:{sure(){this.$emit('toParent',this.count); //toParent是自定义事件名,this.count是需要给父组件的值}
}
父组件内:在实例化的子组件中,通过子组件内定义的自定义事件函数接收。
//在父组件中,引入并实例化子组件,并在实例化标签中通过子组件内定义的自定义事件接收值
<子组件 @toParent="getData"></子组件>data(){return{countFromSon:'',}
},
methods:{getData(val){ //参数val就是子组件给父组件传来的值this.countFromSon=val;}
}
注意:假如在父组件实例化子组件的标签内,通过自定义事件定义的方法中有形参row,如:
<子组件 @toParent="getData(row)"></子组件>
那么在getData方法中接收来自子组件的数据时,就需要用到第二个默认参数$event,如:
getData(val,$event){ 此时的$event才是来自子组件的值,而val是事件方法中携带的row形参
this.countFromSon=$event;
}
3.任意组件之间传值:(通过中间量,结合$emit和$on)
一般使用两种方式进行任意组件之间传值,其原理一致,都是将传的值与vue实例相关联。
方式一:
首先:创建一个EventBus.js文件,引入并导出vue实例。
import Vue from 'vue'; //引入vue实例
export default new Vue(); //导出默认vue实例
然后:在发送方组件内引入EventBus.js,再通过bus.$emit自定义事件发送数据。
import bus from './eventBus.js';methods:{handSend(){bus.$emit('自定义事件名','要发生的数据');}
}
最后,在接收方组件内引入EventBus.js,再在created()生命周期函数中通过bus.$on接收数据
import bus from './eventBus.js';data(){return {getFatherData:''}
},
created(){bus.$on('事件名',val=>{ //val就是发送方组件传来的值。事件名要和发送方的自定义事件名保持一致this.getFatherData=val;})
}
方式二:
在项目全局入口文件main.js中,创建一个空的vue实例,并挂载到vue的原型上。
首先:在main.js中:
Vue.prototype.$bus=new vue();
然后,在发送方,通过this.$bus.$emit自定义事件发送数据
methods:{handSend(){this.$bus.$emit('自定义事件名','要发生的数据');}
}
最后,在接收方,在created()生命周期函数中通过this.$bus.$on接收数据
data(){return {getFatherData:''}
},
created(){this.$bus.$on('事件名',val=>{ //val就是发送方组件传来的值。事件名要和发送方的自定义事件名保持一致this.getFatherData=val;})
}
vue组件间相互传值相关推荐
- Vue组件间的传值五大场景,你造吗?
摘要:组件是 vue.js最强大的功能之一,这五个组件间传值场景你了解吗? 本文分享自华为云社区<你了解Vue组件间传值五大场景吗?>,作者:北极光之夜. . 父组件向子组件传值: 比如有 ...
- Vue 组件间的传值(通讯)
组件之间的通讯分为三种 父给子传 子给父传 兄弟组件之间的通讯 1 父组件给子组件传值 子组件嵌套在父组件内部,父组件给子组件传递一个标识,在子组件内部用props接收,子组件在模板里可以通过{{}} ...
- vue组件间的传值方式及方法调用汇总
1.传值 a.父组件传子组件 方法一: 父页面: <myReportContent v-if="contentState==1" :paramsProps='paramsPr ...
- Vue组件之间相互传值的方式
1父传子 1.1父组件 1.2子组件:在 props 中添加了元素之后,就不需要在 data 中再添加变量了 2子传父 2.1子组件 2.2父组件 兄弟组件传值一:使用全局函数全局事件 第一步: 在入 ...
- vue 组件间的传值
子向父传递参数 利用 子组件 中的 $meit 属性,注册事件,然后在 父组件 中,使用 $meit 定义的方法,在 父组件 中绑定事件:我们触发 子组件 的绑定 $meit 事件,就会 触发 父组件 ...
- 初识 Vue(18)---(非父子组件间的传值)
非父子组件间的传值 常一个应用会以一棵嵌套的组件树的形式来组织:将一个大组件进行拆分 下图这种情况的组件间传值(父子组件间传值) 方法:父组件通过 Props 向子组件传值,子组件通过事件触发向父组件 ...
- Vue组件间传值详解
文章目录 1. 父组件向子组件传值 1.1 描述 1.2 props接收数据: 2. 子组件向父组件传值 3. 兄弟组件间传值 4. 事件总线 5. Ref 6. root/parent/childr ...
- vue组件间传值的六种方法
一. vue组件间传值 1. 父组件向子组件进行传值props 父组件代码: <template><div>父组件:<input type="text" ...
- vue组件间通信六种方式(完整版)
前言 组件是 vue.js 最强大的功能之一,而组件实例的作用域是相互独立的,这就意味着不同组件之间的数据无法相互引用.一般来说,组件可以有以下几种关系: 如上图所示 ...
最新文章
- c++输入了后边不继续_医疗:连涨多日,后边还能加仓吗?直接说答案!
- java8 快排_Java 8快多少?
- android模拟器安装及优化(集锦)
- 1.12_count_sort_计数排序
- matlab gui 保存文件,Matlab GUI的文件打開和保存uigetfile uigetdir
- 雷达水位计的工作原理及安装维护注意事项
- mapgis考试111
- 从零开始做游戏 - 上上下下左右左右BABA
- 五分钟掌握SEO入门实用优化技巧
- Node 框架之sails
- windows 防火墙日志_如何使用Windows防火墙日志跟踪防火墙活动
- 在本计算机无法启动用友通服务器,用友通客户端连接不上服务器解决方案
- 10-113 A1-7在产品表中找出库存量小于订购量的产品信息
- 为何两个完全一样的字符串相比较却不一样
- 动物科学可以转计算机专业吗,报考华中农业大学计算机,被调剂到动物科学,真不该盲目服从...
- java是几位的unicode,下列说法错误的是()。A.Java的字符类型采用的是Unicode编码,每个Unicode码占16位比特B.Java的各种...
- 【全源码及文档】基于JSP实现的影视创作论坛系统
- 南山中集集团Java面试_中集集团面试经验
- 老男孩视频教程前四期整理
- Linux下安装MySQL 8.0
热门文章
- java手机编程软件ios,赶紧收藏起来!
- 一把梭哈,轻松解决CentOS7离线RPM方式安装perl工具
- react htmlh1无效,详解react阻止无效重渲染的多种方式_而已_前端开发者
- Shell脚本关闭Nginx进程
- Git 回滚命令笔记
- 11 2017-BrainNetCNN for Brain Networks Towards Predicting Neurodevelopment
- javascript 全文替换
- 最受欢迎的15个顶级 Python 库
- JavaScript 转换数字为整数的方法
- 前端修改服务器cookie,前端中怎样设置cookie