1.vue父组件向子组件动态传值的两种方法
在一些项目需求中需要父组件向子组件动态传值,比如我这里的需求是,父组件动态通过axios获取返回的图片url数组然后传给子组件,上传图片的子组件拿到该数组后进行遍历并展示图片,因为有时候获取到的会是空,所以这里要考虑到动态获取。

方法有两种,

方法一:
props传值,这里注意一个问题,传过来的值需要用watch监听并赋值,否则这里获取到的是空数组
父组件:

<uploadImg :width="200" :height="200" name="productImage" size="750px*750px" ref="productImage" :src-list="this.productImage"></uploadImg>
this.productImage=res.data.cover;

这里把通过后台返回的数组赋值给this.productImage,然后把该数组传给子组件定义的props属性src-list

export default {name: '***',props: {srcList: {}},data() {uploadImg: ''}
}

子组件:
watch代码

watch:{srcList(curVal,oldVal){if(curVal){this.uploadImg=curVal;}},
}

方法二:

通过ref属性,父组件调用子组件的方法,把要传的数组作为参数传给子组件,子组件获取该参数,并使用

父组件:

this.$refs.productImage.getSrcList(res.data.cover);
子组件:

getSrcList(val){
this.uploadImg=val;
}

同理,子组件向父组件传值,如果是动态改变的,也要记得加watch函数,动态改变之后执行的操作写在watch里,比如 this.$emit 的函数!

2.vue父组件中获取子组件中的数据

<FormItem label="上传头像" prop="image"><uploadImg :width="150" :height="150" :name="'avatar'" size="150px*150px" ref="avatar"></uploadImg>
</FormItem>
<FormItem label="上传营业执照" prop="businessLicence"><uploadImg :width="350" :height="200" :name="'businessLicence'" size="350px*200px" ref="businessLicence"></uploadImg>
</FormItem>

自己写了个上传图片的子组件,父组件需要获取到子组件上传的图片地址,

方法一:给相应的子组件标签上加 ref = “avatar”

父组件在最后提交的时候获取this.$refs.avatar.相应数据 即可,因为在这里才能保证图片已经上传,否则如果图片没上传,拿到的值一定为空。

方法二:$emit()

/*子组件
*/
<template><input type='file' @change="changeUrl" />
</template>
<script>
export default {methods: {changeUrl(e) {this.$emit('changeUrl', e.currentTarget.files[0].path)}}
}
</script>
/*父组件
*/
<template><FormItem label="上传营业执照" prop="businessLicence"><uploadImg :width="350" :height="200" :name="'license'" size="350px*200px" @changeUrl="getUrl"></uploadImg></FormItem>
</template>
<script>
export default {methods: {getUrl(path) {//这个就是你要的path,并且会双向绑定}}
}
</script>

当使用this.$emit方法获取的时候,如果子组件想要给父组件传入多个值,则可以写多个参数,父组件在获取的时候获取多个参数的值即可

//父组件
getUrl(path1,path2) {
console.log(path1,path2)
}

注意问题:
1、父组件相应事件写在该子组件上
2、子组件如果并没有click事件触发,也没有类似本例input需要change事件触发,则在created或者mounted函数中让该函数加载即可
3、子组件向父组件传值需 是父组件 用到了 ,如果多个父组件引用了该子组件,则只有传值的时候用的子组件来自哪个父组件,这个父组件才可以接收到值,其他父组件获取不到子组件传的值。

vue父子组件动态传值的几种方式相关推荐

  1. 【Vue】组件间传值的三种方式:父传子,子传父,非父子传值

    引用官网的一句话:父子组件的关系可以总结为 prop 向下传递,事件向上传递.父组件通过 prop 给子组件下发数据,子组件通过事件给父组件发送消息,如下图所示: 1,父组件传值给子组件 代码: &l ...

  2. vue组件之间传值的几种方式

    vue组件传值 父子组件之间传值.几种常见方式 第一种方式(父传子) 父组件 <m-child :childMsg="parentMsg"></m-child&g ...

  3. vue父子组件之间传值的方法

    vue父子组件之间传值的方法 一.基本父子传值 父传子 方式: props 效果: 把父组件的fatherName属性传入子组件,在子组件中使用 父组件代码: <template>< ...

  4. vue父组件向子组件动态传值的两种方法

    在一些项目需求中需要父组件向子组件动态传值,比如我这里的需求是,父组件动态通过axios获取返回的图片url数组然后传给子组件,上传图片的子组件拿到该数组后进行遍历并展示图片,因为有时候获取到的会是空 ...

  5. Vue父子组件prop传值时的问题

    项目场景: 最近在做Vue企业开发项目的时候碰到的一个问题 问题描述: Vue在父子组件中使用props进行传值时,我在父组件中调用接口获取到了两种后端返回的数据,然后我想通过同一个子组件使用prop ...

  6. Vue实现组件间通信的七种方式

    1. props / $emit 父组件通过props的方式向子组件传递数据,而通过$emit 子组件可以向父组件通信: 父传子:父组件通过import引入子组件,并注册,在子组件标签上添加要传递的属 ...

  7. vue中组件间通信的6种方式

    前言 组件是 vue.js最强大的功能之一,而组件实例的作用域是相互独立的,这就意味着不同组件之间的数据无法相互进行直接的引用,所以组件间的相互通信是非常重要的. 除了使用vuex外还有下面6种组件间 ...

  8. Vue 路由组件传参的 8 种方式

    我们在开发单页面应用时,有时需要进入某个路由后基于参数从服务器获取数据,那么我们首先要获取路由传递过来的参数,从而完成服务器请求,所以,我们需要了解路由传参的几种方式,以下方式同 vue-router ...

  9. Vue父子组件之间传值

    组件分两种,全局组件和局部组件 全局组件这么写 Vue.component("nav-bar",{props:['navShow',"elecText",&qu ...

最新文章

  1. 基于Bootstrap里面的Button dropdown打造自定义select
  2. 基于关键帧的RGB-D视觉惯性里程计
  3. Android--常驻BroadReceiver实现短信提醒
  4. VTK:可视化之LabeledMesh
  5. 批量获取域名解析地址socketthread
  6. 计算机专业考试知识点,2016计算机专业知识:精选知识点练习(126)
  7. 在线字符串哈希/散列加密工具
  8. 实时查看Linux IO复用情况
  9. C++类对象创建过程揭密
  10. 运用matlab求黑塞矩阵,用matlab求黑塞矩阵
  11. Linux命令学习(1) cat命令详解
  12. 计算机界十位顶级人物!
  13. 2021韩顺平图解linux_狗剩学习笔记
  14. matlab批量处理程序设计,Matlab实现批量处理图像的两种方法
  15. angular中的?:什么意思
  16. Linux ln -sfn命令
  17. JVM/JDK/JRE/IDE—区别
  18. IntelliJ IDEA创建Servlet最新方法 Idea版本2021以及IntelliJ IDEA创建Servlet 404问题,找不到对应的路径。
  19. 新版mysql改初始密码
  20. 大灰狼的故事-大灰狼和小乌龟

热门文章

  1. 摄像头OV7670与OV7620对比
  2. 网络安全四大合规-“3保1评”
  3. 【技术分享】防止根据IP查域名,防止源站IP泄露
  4. 备战2020,软件测试工程师面试题集锦
  5. pycharm 字体放大与缩小
  6. 工作流平台airflow简介
  7. huffman树的带权路径长度
  8. docker容器迁移的解决方案
  9. Drupal Theme 主题系统:入门与进阶教程
  10. springboot留守儿童爱心网站