安森 发表于 2024-9-12 12:12:33

vue如何封装选择文件组件和选择文件api

vue封装选择文件组件和选择文件api


方式一:选择文件组件

<template>
        <div @click="clickHandle">
       <slot></slot>
           <input type="file" hidden
           ref="inputRef"
           @change="changeFile"
           :accept="accept"
           :multiple="multiple"
          />
        </div>
</template><script>
        export default {
                name:'ChooseFile',
                props:{
                        accept:{
                                type:String
                        },
                        multiple:{
                                type:Boolean,
                                default:false
                        }
               
                },
                methods: {
                        clickHandle() {
                                this.$refs.inputRef.click()
                       
                        },
                        changeFile(e){
                               
                                this.$emit('chooseFile',e.target.files)
                        }
                },
        }
</script>

<style scoped>

</style>
方式二:选择文件api

const ChooseFile = (options) => {
        if(typeof options ==='function'){
                options={success:options}
        }
        if (typeof options === 'object') {
                let input = document.createElement("input")
                document.body.appendChild(input)
                input.type = 'file'
                input.hidden='hidden'
                if (options.accept) {
                        input.accept = options.accept
                }
                if (options.multiple != null) {
                        input.multiple = options.multiple
                }
                input.click()
                input.onchange = (e) => {
                                options.success(e.target.files)
                                document.body.removeChild(input)
                }
        }
}
export default ChooseFile挂载在vue原型上

使用

this.$chooseFile((files)=>console.log(files))
总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

来源:https://www.jb51.net/javascript/326743mcd.htm
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: vue如何封装选择文件组件和选择文件api