无法在queuecomplete上检索dropzone节点吗?

时间:2018-06-13 16:04:48

标签: javascript jquery dropzone.js

我想检索已完成上传队列的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表明所有事件都应该传递一个事件参数,根据我的理解,我应该能够从这个参数中检索收到事件的节点,或者从这个'这个' ......或者某个地方,但似乎我的理解是有缺陷的。

有人可以向我解释一下,对此的正确方法是什么?

1 个答案:

答案 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);
    });
  }
});