无法在 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);
    });
  }
});