我刚刚使用Vue-dropzone创建了一个简单的文件上传器组件。但是,我想通过在拖放区中已有一些图像时包括一个图标或一个名为“添加更多图像”的按钮来对其进行自定义,以便用户理解可以上传多张照片。我该如何实现?下面是我的代码和我要实现的屏幕截图
更新我仍在尝试实现此功能,我们将不胜感激
Update2 我仍然坚持这样做,有谁能很好地指导我完成任务?
<template>
<vue-dropzone
id="drop1"
:options="dropOptions"
:useCustomSlot="true"
@vdropzone-complete="afterComplete"
>
<div class="dropzone-custom-content">
<i class="fas fa-cloud-upload-alt fa-3x"></i>
<h4 class="dropzone-custom-title mb-0 mt-3">Drag & Drop</h4>
<div class="subtitle">or click to add your image</div>
</div>
</vue-dropzone>
</template>
import vueDropzone from "vue2-dropzone";
export default {
data() {
return {
dropOptions: {
url: "https://httpbin.org/post",
acceptedFiles: "image/*",
addRemoveLinks: true,
thumbnailWidth: 160, // px
thumbnailHeight: 160
}
};
},
components: {
vueDropzone
}
};
答案 0 :(得分:1)
似乎没有官方的方法可以做到这一点。但是从这个comment开始,我修改了他的代码以与vue2-dropzone
一起使用,如下所示:
<template>
<div>
<vue-dropzone id='dropzone'
ref='myVueDropzone'
:options='dropzoneOptions'
@vdropzone-file-added='handleMoreThumbnail'
@vdropzone-removed-file='handleMoreThumbnail'>
</vue-dropzone>
<div class='more' ref='more'>+</div>
</div>
</template>
<script>
import vueDropzone from 'vue2-dropzone'
import 'vue2-dropzone/dist/vue2Dropzone.min.css'
export default {
components: {
vueDropzone
},
data () {
return {
dropzoneOptions: {
url: 'https://httpbin.org/post',
addRemoveLinks: true
}
}
},
mounted () {
this.$el.removeChild(this.$refs.more)
},
methods: {
handleMoreThumbnail () {
let dropzone = this.$refs.myVueDropzone.dropzone
dropzone.files.length > 0
? dropzone.element.appendChild(this.$refs.more)
: dropzone.element.removeChild(this.$refs.more)
}
}
}
</script>
<style>
.more {
display: inline-block;
margin: 16px;
border: 3px dashed lightgray;
width: 200px;
height: 200px;
box-sizing: border-box;
color: lightgray;
border-radius: 8px;
font-size: 60px;
text-align: center;
line-height: 200px;
pointer-events: none;
}
</style>