广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >关于Vue父子组件传参和回调函数的使用
  • 451
分享到

关于Vue父子组件传参和回调函数的使用

Vue父子组件Vue组件回调函数 2023-05-19 21:05:13 451人浏览 八月长安
摘要

目录关键点: 父组件给子组件动态传参使用v-bind:属性key(多个单词用下划线拼接) 子组件接收父组件传参参数使用 props标签,+属性key多个单词用驼峰形式拼接) 子组件定

关键点: 父组件给子组件动态传参使用v-bind:属性key(多个单词用下划线拼接) 子组件接收父组件传参参数使用 props标签,+属性key多个单词用驼峰形式拼接)

子组件定义回调父组件函数 子组件: v-on:change="uploadFile()

父组件: :after-upload=“afterUpload” 然后定一个afterUpload(resp)方法接收子组件传过来的值

    <div class="col-sm-10">
                  <file :text="'上传头像1'"
                        :input-id="'image-upload'"
                        :suffixs="[ ['jpg', 'jpeg', 'png']]"
                        :after-upload="afterUpload">
                  </file>
<script>
import File from "../../components/file";
export default {
  components: {File},
  name: "business-teacher",
  data: function () {
  },
  mounted: function () {
  },
  methods: {
    afterUpload(resp) {
      let _this = this
      let image = resp.content;
      _this.teacher.image = image
    }
  }
}
</script>

子组件

<template>
  <div>
    <button type="button" v-on:click="selectFile()" class="btn btn-white btn-default btn-round">
      <i class="ace-icon fa fa-upload"></i>
      {{ text }}
    </button>
    <input class="hidden" type="file"
           ref="file"
           v-on:change="uploadFile()"
           v-bind:id="inputId+'-input'">
  </div>
</template>
<script>
export default {
  name: 'file',
  props: {
    text: {
      default: "上传文件"
    },
    inputId: {
      default: "file-upload"
    },
    suffixs: {
      default: []
    },
    afterUpload: {
      type: Function,
      default: null
    },
  },
  data: function () {
    return {}
  },
  methods: {
    uploadFile() {
      let _this = this;
      let fORMData = new window.FormData();
      let file = _this.$refs.file.files[0];
      // 判断文件格式
      let suffixs = _this.suffixs;
      let fileName = file.name;
      let suffix = fileName.substring(fileName.lastIndexOf(".") + 1, fileName.length).toLowerCase();
      let validateSuffix = false;
      for (let i = 0; i < suffixs.length; i++) {
        let suffix2 = suffixs[i] += ''
        if (suffix2.toLowerCase() === suffix) {
          validateSuffix = true;
          break;
        }
      }
      if (!validateSuffix) {
        Toast.warning("文件格式不正确,只支持上传:" + suffixs.join(","));
        //解决 同一个文件上传2次或者大于2次,不会发生变化
        $("#" + _this.inputId + "-input").val("");
        return
      }
      // key:"file"必须和后端controller参数名一致
      formData.append("file", file);
      Loading.show()
      _this.$api.post(process.env.Vue_APP_SERVER + '/file/admin/upload', formData).then((response) => {
        Loading.hide()
        let resp = response.data
        console.log("上传文件成功:", resp)
        //回调父组件函数
        _this.afterUpload(resp)
        //解决 同一个文件上传2次或者大于3次,不会发生变化
        $("#" + _this.inputId + "-input").val("");
      })
    },
    selectFile() {
      let _this = this
      // console.log("_this.inputId",_this.inputId)
      $("#" + _this.inputId + "-input").trigger("click");
    }
  },
}
</script>
<style scoped>
</style>

到此这篇关于关于Vue父子组件传参和回调函数的使用的文章就介绍到这了,更多相关Vue父子组件回调函数内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 关于Vue父子组件传参和回调函数的使用

本文链接: https://www.lsjlt.com/news/213693.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作