我想检索已完成上传队列的dropzone节点(同一页面上有多个),但我遇到了困难
var dropzone = new Dropzone("#" + dz_id, {
autoProcessQueue: true,
url: url + endpointFileMgr,
headers:{"APIKey":APIKey, "IndexUUID": Indexes[i].IndexUUID,"Cache-Control": "",},
maxFilesize: 1024, //MB
queuecomplete: function(e){
// alert("e innerHTML " + e.innerHTML); // No Alert, Console Error "Cannot read property 'innerHTML' of undefined"
//alert("e.target.innerHTML " + e.target.innerHTML); // No Alert, Console Error "Cannot read property 'target' of undefined"
alert ("this.innerHTML " + this.innerHTML); // Alert's 'this.innerHTML undefined'
alert("$(e).html()" + $(e).html()); // Alert's '$(e).html() undefined'
//alert("$(this).html()" + $(this).html()); // No Alert, Console Error "Cannot read property 'createDocumentFragment' of undefined"
//alert ("$(dropzone).html() " + $(dropzone).html()); // No Alert, Console Error "Cannot read property 'createDocumentFragment' of undefined"
alert(e.currentTarget.innerHTML); // No alert, "Cannot read property 'currentTarget' of undefined"
}
});
我在循环中以编程方式创建多个dropzones,这就是我将选项作为对象传递的原因,而不是之后按照Dropzone文档中的建议进行访问。
Dropzone Documentation表明所有事件都应该传递一个事件参数,根据我的理解,我应该能够从这个参数中检索收到事件的节点,或者从这个'这个' ......或者某个地方,但似乎我的理解是有缺陷的。
有人可以向我解释一下,对此的正确方法是什么?
答案 0 :(得分:1)
定义queuecomplete
选项时,如:
{
// .....
queuecomplete: function(e) {
// ---
}
}
在这种情况下你正在做的是覆盖dropzone在queuecomplete
上的行为,除非你真的想要这样做,你应该将自己的事件监听器附加到这样的queuecomplete
事件:
var dropzone = new Dropzone("#" + dz_id, {
autoProcessQueue: true,
url: url + endpointFileMgr,
headers: {
APIKey: APIKey,
IndexUUID: Indexes[i].IndexUUID,
"Cache-Control": ""
},
maxFilesize: 1024, //MB
init: function() {
let thisDropzone = this;
this.on("queuecomplete", function() {
alert(thisDropzone.element.innerHTML);
});
}
});