我有一个也使用 vue2-dropzone 包的表单。我想我已经差不多了,只是我无法发送其余的表格。我试图获取表单的其余部分的方式是从该data()
部分中获取我的表单对象,但是唯一发送的是文件,并且表单的其余部分不包括在内,并且当我console.log(this.form)
未定义时。这是我的vue文件
<template>
<div>
<div class="row">
<div class="col-md-6">
<div class="form-group">
<label>Name</label>
<input type="text" class="form-control" v-model="form.name">
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label>Description</label>
<input type="text" class="form-control" v-model="form.description">
</div>
</div>
</div>
<div class="row">
<div class="col-lg-12">
<label class="form-label">Select a file for upload</label>
<vue-dropzone ref="myVueDropzone" id="dropzone" style="align-content: center" @vdropzone-file-added="fileAdded()" @vdropzone-success="uploadSuccess" @vdropzone-removed-file="removedFile" @vdropzone-error="showUploadError" :options="dropzoneOptions"></vue-dropzone>
</div>
</div>
<div class="row">
<div class="col-md-6">
<button type="button" id="add-product" class="btn btn-success">Add Product</button>
</div>
</div>
</div>
</template>
<script>
import vue2Dropzone from 'vue2-dropzone'
import 'vue2-dropzone/dist/vue2Dropzone.min.css'
export default {
props: [],
components: {
vueDropzone: vue2Dropzone
},
data(){
const token = document.head.querySelector('meta[name="csrf-token"]').content
return {
dropzoneOptions: {
url: `/api/product/save`,
thumbnailWidth: 150,
maxFilesize: 9.5,
headers: { 'X-CSRF-TOKEN': token },
dictDefaultMessage:"Select file for upload",
addRemoveLinks: true,
autoProcessQueue: false,
init: function(){
let myDropzone = this;
$("#add-product").click(function (e) {
e.preventDefault();
myDropzone.processQueue();
});
this.on('sending', function(file, xhr, formData) {
var data = this.form;
console.log('dropzone sending data', data);
$.each(data, function(key, el) {
formData.append(el.name, el.value);
});
})
}
},
form: {
name: null,
description: null,
},
}
}
}
</script>