Я создал пользовательскую Dropzone с vue2Dropzone:
<drop-zone :options="MydropzoneOptions" :include-styling="false" @vdropzone-success="UploadSuccess" @removeUpload="removeFile" id="MyDropzoneID" ref="MyDropzone" :useCustomSlot=true>
<div class="dropzone-custom-content">
<h3>Upload Here</h3>
</div>
</drop-zone>
Загруженные файлы затем отображаются в отдельном div с id = "uploaded":
<div id="uploaded" class="dropzone-previews">
<h3>Uploaded Files:</h3>
<template v-for="(UploadFile,index) in MyUploads">
<img :src="UploadFile.Dateiname"><a title="Delete this file" @click="$emit('removeUpload')">Delete</a>
</template>
</div>
В ' uploaded 'div, рядом с каждым загруженным изображением (миниатюрой) есть ссылка для удаления каждого файла. Но я не знаю, как реализовать эту функцию. Документация гласит: есть метод с именем removeFile (файл): .removeFile(file) -->Removes a file from the dropzone area.
Я создал метод с именем removeThisFile, запустил @ click = "removeThisFile":
removeThisFile: function(){
this.$refs.MyDropzone.removeFile()
console.log("File removed!")
}
Но в результате консоль сказала «this. $ Refs.Mydropzone не определена, что имеет смысл сейчас, поскольку только объект DOM может передать необходимую информацию о файле. Поэтому я решил попробовать версию, которую вы видите в начале:
<div><a[..] @click="$emit('removeUpload')></a></div>
и в DOM-объекте drop-zone есть слушатель этого, запускающий мой метод "removeThisFile".
<drop-zone [..] @removeUpload="removeThisFile" [..]></drop-zone>
Но это также не работает, я не знаю почему, поскольку я не получаю сообщение об ошибке в консоли, но этот метод также не запущен, поскольку в консоли также нет «Файл удален!».
Почему это не работает, это вообще так? правильный способ сделать это?