【Vue】父子组件传值、方法引用
父子组件值、方法引用
1、值
1.1 父组件获取子组件值
父组件
<template>
<div>
<button @click="getChildValue">click</button>
<child ref="child"></child>
</div>
</template>
<script>
import Child from './Child.vue'
export default {
name: "Parent",
components: {
Child
},
data() {
return {}
},
methods: {
getChildValue() {
console.log(this.$refs.child.msg1)
}
}
}
</script>
子组件
<template>
<div id="child">
<div>{{ msg1 }}</div>
</div>
</template>
<script>
export default {
name: "Child",
data() {
return {
msg1: "i am child"
};
},
methods: {}
}
</script>
测试结果在控制台查看
1.2 子组件获取父组件值
方式1:
props: ['parentName']
方式2:
props: {
parentName: String //这样可以指定传入的类型,如果类型不对,会警告
}
方式3:
props: {
msgVal: {
type: String, //指定传入的类型
//type 也可以是一个自定义构造器函数,使用 instanceof 检测。
default: '' //这样可以指定默认的值
}
}
注意:props 会在组件实例创建之前进行校验,所以在 default 或 validator 函数里,
诸如 data、computed 或 methods 等实例属性还无法使用
父组件
<template>
<div>
<child ref="child" :parentName="parentName"></child>
</div>
</template>
<script>
import Child from './Child.vue'
export default {
name: "Parent",
components: {
Child
},
data() {
return {
parentName:'i am parent'
}
},
methods: {
}
}
</script>
子组件
<template>
<div id="child">
<button @click="getParentsValue">获取父组件值</button>
</div>
</template>
<script>
export default {
name: "Child",
props:['parentName'],
data() {
return {
};
},
methods: {
getParentsValue(){
console.log(this.parentName)
}
}
}
</script>
2、方法
2.1 父组件调用子组件方法
父组件
<template>
<div>
<button @click="clickChildMethodNoParams">调用子组件方法 无参数 </button>
<button @click="clickChildMethodParams">调用子组件方法 有参数 </button>
<child ref="child" ></child>
</div>
</template>
<script>
import Child from './Child.vue'
export default {
name: "Parent",
components: {
Child
},
data() {
return {
}
},
methods: {
clickChildMethodNoParams(){
this.$refs.child.childMethod();
},
clickChildMethodParams(){
this.$refs.child.childMethodAddParams(' i am parent ');
}
}
}
</script>
子组件
<template>
<div id="child">
<p> this is child compoents </p>
</div>
</template>
<script>
export default {
name: "Child",
data() {
return {
};
},
methods: {
childMethod(){
console.log('i am child method')
},
childMethodAddParams(param){
console.log('i am child method ',param)
}
}
}
</script>
2.2 子组件调用父组件方法
父组件
<template>
<div>
<child ref="child"
@clickChildMethodNoParams="clickChildMethodNoParams"
@clickChildMethodParams="clickChildMethodParams"
></child>
</div>
</template>
<script>
import Child from './Child.vue'
export default {
name: "Parent",
components: {
Child
},
data() {
return {
}
},
methods: {
clickChildMethodNoParams(){
console.log('i am parent')
},
clickChildMethodParams(params){
console.log('i am parent '+ params)
}
}
}
</script>
子组件
<template>
<div id="child">
<button @click="childParentMethodNoParams">调用父组件方法 无参数 </button>
<button @click="childParentMethodParams">调用父组件方法 有参数 </button>
<p> this is child compoents </p>
</div>
</template>
<script>
export default {
name: "Child",
data() {
return {
};
},
methods: {
childParentMethodNoParams(){
this.$emit('clickChildMethodNoParams');
},
childParentMethodParams(){
this.$emit('clickChildMethodParams','hello i am child ');
}
}
}
</script>
【Vue】父子组件传值、方法引用的更多相关文章
- Vue 父组件传值给子组件,对象数组类型,父组件直接调用子组件方法,会是上次的引用地址,vue 父子组件传值数据不能实时更新问题
vue 父子组件传值数据不能实时更新问题 解决方案一: 在子组件进行深度监听,然后监听里调用方法就可以了 父组件测试代码 <WranList ref="myEMChartRef2&qu ...
- vue父子组件传值加例子
例子:http://element-cn.eleme.io/#/zh-CN/component/form 上进行改的 父传子:用prop:子组件能够改变父组件的值,是共享的,和父操作是 ...
- 一个故事讲懂vue父子组件传值
作者:李佳明同学链接:https://www.jianshu.com/p/2272b6ca0f0c 一个故事讲懂vue父子组件传值 讲故事前先讲代码 父组件向子组件传值 父组件数据传递给子组件可以通过 ...
- 关于Vue父子组件传值(复杂数据类型的值)的细节点
vue 父子组件传值是很常见的,多数情况下都是父传递给子的值是基础数据类型,如string,number,boolean, 当父组件值被修改时,子组件能够实时的作出改变. 如果父子传值的类型是复杂数据 ...
- Vue父子组件传值——第一次传不过去之“怪象”?
前言:最近写Vue父子组件传值出现第一次传不过去之"怪象",以为Vue的BUG呢.然则,是自己太菜"^_^"!!!特此记录以警己 <spec-param& ...
- vue 父子组件传值以及方法调用,平行组件之间传值以及方法调用大全
vue项目经常需要组件间的传值以及方法调用,具体场景就不说了,都知道.基本上所有的传值都可以用vuex状态管理来实现,只要在组件内监听vuex就好. vue常用的传值方式以及方法有: 1. 父值传子( ...
- Vue父子组件传值以及父调子方法、子调父方法
稍微总结了一下Vue中父子间传值以及相互调方法的问题,非常基础.希望可以帮到你!先来个最常用的,直接上代码: 1.父传值给子组件 父组件: <template> <div> & ...
- Vue 父子组件传值 props
1.Vue 的渲染周期: vue 如何实现响应式追踪. 父子组件通信有很多方式,今天单独聊下props 的方式.我们通过查找官方文档很容发现,props传值有静态和动态两种传值方式. 当然props ...
- VUE父子组件传值问题
一.父组件向子组件传递数据 组件实例的作用域是孤立的.这意味着不能(也不应该)在子组件的模板内直接引用父组件的数据.要让子组件使用父组件的数据,我们需要通过子组件的props选项. 1.静态props ...
- vue 父子组件传值,兄弟组件传值
父子组件中的传值 父向子 v-bind props <!-- 组件使用v-bind传值 --> <router :msg="msg"></rou ...
随机推荐
- day72:drf:反序列化功能&模型类序列化器Modelserializer&drf视图APIView
目录 1.续:反序列化功能(5-8) 1.用户post类型提交数据,反序列化功能的步骤 2.反序列化功能的局部钩子和全局钩子 局部钩子和全局钩子在序列化器中的使用 反序列化相关校验的执行顺序 3.反序 ...
- ROS机器人SLAM创建地图
ROS机器人SLAM创建地图 连接小车 ssh clbrobot@clbrobot 激活树莓派 roslaunch clbrobot bringup.launch 开启雷达 打开另一个终端输入: ss ...
- Analysis of Variance 方差分析
title: "Analysis of Variance" author: '01' date: "2022-11-23" output: html_docum ...
- P1980 [NOIP2013 普及组] 计数问题
题目链接:https://www.luogu.com.cn/problem/P1980 术语 以下的英文术语均可以翻译为数字. digit: 一个数字字符,十进制就是 0-9 之间的一个字符: num ...
- 【Redis】数据类型介绍
一.字符 string Redis常用基本类型之一,存入Redis的所有key都是字符类型,常用于保存Session信息 字符类型 命令 含义 复杂度 set <key> <valu ...
- #Python基础 利用Pyinstaller 模块对python代码进行打包exe
一般我们都用 Python 的 Pyinstaller 模块进行打包,这里记录Pyinstaller 模块进行打包. 一:安装 Pyinstaller 模块 pip install PyInstall ...
- 2021-05-04:给定一个非负整数c,你要判断是否存在两个整数a和b,使得a*a+b*b=c。【举例】c=5时,返回true。c=4时,返回true。c=3时,返回false。
2021-05-04:给定一个非负整数c,你要判断是否存在两个整数a和b,使得aa+bb=c.[举例]c=5时,返回true.c=4时,返回true.c=3时,返回false. 福大大 答案2021- ...
- 2021-04-30:一条直线上有居民点,邮局只能建在居民点上。给定一个有序正数数组arr,每个值表示 居民点的一维坐标,再给定一个正数 num,表示邮局数量。选择num个居民点建立num个 邮局,使
2021-04-30:一条直线上有居民点,邮局只能建在居民点上.给定一个有序正数数组arr,每个值表示 居民点的一维坐标,再给定一个正数 num,表示邮局数量.选择num个居民点建立num个 邮局,使 ...
- 【重学C++】03 | 手撸C++智能指针实战教程
文章首发 [重学C++]03 | 手撸C++智能指针实战教程 前言 大家好,今天是[重学C++]的第三讲,书接上回,第二讲<02 脱离指针陷阱:深入浅出 C++ 智能指针>介绍了C++智能 ...
- 计算机网络OSI七层参考模型和tcp/udp五层参考模型
计算机网络OSI七层参考模型和tcp/udp五层参考模型 目录 一.OSI七层参考模型和TCP/UDP五层参考模型 1.应用层 2.表示层 3.会话层 4.传输层 5.网络层 6.数据链路层 7.物理 ...