无法在 queuecomplete 上检索 dropzone 节点?
Can't Retrieve dropzone node on queuecomplete?
我想检索已完成其上传队列的 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"
}
});
我在一个循环中以编程方式创建多个拖放区,这就是为什么我将我的选项作为一个对象传递,而不是像 Dropzone 文档中建议的那样在之后访问。
Dropzone Documentation 建议所有事件都应该传递一个事件参数,据我所知,我应该能够从该参数或 'this' 中检索接收到事件的节点 .. . 或者在某个地方,但我的理解似乎有缺陷。
有人可以向我解释一下,正确的做法是什么吗?
当您定义 queuecomplete
选项时:
{
// .....
queuecomplete: function(e) {
// ---
}
}
在这种情况下,您正在做的是在 queuecomplete
上覆盖 dropzone 自己的行为,除非您真的想这样做,否则您应该将自己的事件侦听器附加到 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);
});
}
});
我想检索已完成其上传队列的 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"
}
});
我在一个循环中以编程方式创建多个拖放区,这就是为什么我将我的选项作为一个对象传递,而不是像 Dropzone 文档中建议的那样在之后访问。
Dropzone Documentation 建议所有事件都应该传递一个事件参数,据我所知,我应该能够从该参数或 'this' 中检索接收到事件的节点 .. . 或者在某个地方,但我的理解似乎有缺陷。
有人可以向我解释一下,正确的做法是什么吗?
当您定义 queuecomplete
选项时:
{
// .....
queuecomplete: function(e) {
// ---
}
}
在这种情况下,您正在做的是在 queuecomplete
上覆盖 dropzone 自己的行为,除非您真的想这样做,否则您应该将自己的事件侦听器附加到 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);
});
}
});