关于Vue父子组件传参和回调函数的使用
更新时间:2023年05月11日 09:18:03 作者:gblfy
这篇文章主要介绍了关于Vue父子组件传参和回调函数的使用,我们将某段代码封装成一个组件,而这个组件又在另一个组件中引入,而引入该封装的组件的文件叫做父组件,被引入的组件叫做子组件,需要的朋友可以参考下
关键点: 父组件给子组件动态传参使用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父子组件回调函数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
element的el-date-picker组件实现只显示年月日时分效果(不显示秒)
最近遇到这样的需求使用element的el-date-picker组件,只显示时分,不显示秒,下面小编给大家分享element的el-date-picker组件实现只显示年月日时分效果,感兴趣的朋友一起看看吧2024-08-08
最新评论