我在 vuejs 中使用 dropzone 插件,dropzone 的回應是一個陣列。有效載荷有一個引數陣列、一個回應和檔案物件。每次我呼叫@vdropzone-success="$emit('processFunction',$event)它都會正確地將請求發送到正確的函式,但只回傳有效負載陣列的第一個元素。為什么?我附上了 vue 除錯器的螢屏截圖以幫助說明問題。如何訪問 processFunction 中的有效負載以獲取陣列元素 0 和 1?
添加更多背景關系。這是庫中向我的子組件發出的函式
this.dropzone.on("success", function(file, response) {
vm.$emit("vdropzone-success", file, response);
});
在我的 vue 代碼中,我將此結果發送到我的索引組件:
<vue-dropzone
id="dropzone"
ref="myVueDropzone"
@vdropzone-drop="$emit('loading')"
@vdropzone-success="$emit('loaded',...$event)"
:use-custom-slot="true"
:options="dropzoneOptions"
>
我在這里系結到我的 index.vue 上的元素:
<Upload @loading="loading" @loaded="loaded" />
然后呼叫加載的函式
loaded(e) {
console.log(e);
this.notLoading = true;
this.isLoading = false;
},
https://github.com/vuejs/vue/issues/5527 這看起來像一個類似的問題。每當我呼叫 $event 時,它只回傳 0 即檔案。我希望它回傳 1,這是來自服務(物件)的回應。
uj5u.com熱心網友回復:
好的..我覺得應該有更好的方法來做到這一點,但是......看起來我無法直接通過庫->子->父中的vue標簽傳遞陣列變數。相反,我需要在孩子的 js 中拉出陣列,然后在 js 中將其重新發送給父級。以下解決方案有效。
圖書館:
this.dropzone.on("success", function(file, response) {
vm.$emit("vdropzone-success", 檔案, 回應); });
孩子(helper.vue):
<!-- file upload -->
<vue-dropzone
id="dropzone"
ref="myVueDropzone"
@vdropzone-drop="$emit('loading')"
@vdropzone-success="processdata"
:use-custom-slot="true"
:options="dropzoneOptions"
>
以及其中的 js 部分
methods: {
processdata(...ev){
this.$emit("loaded",ev);
},
最后是父級(index.vue)
<Upload @loading="loading" @loaded="loaded" />
和 js
loaded(...e) {
this.storedValue = e;
不是最優雅的解決方案,但它正在起作用!
uj5u.com熱心網友回復:
你可以試試這個:
@vdropzone-success="$emit('loaded')"
<Upload @loading="loading" @loaded="loaded" />
loaded(payload) {
this.storedValue = payload;
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/332926.html
