Ответ 1
script, кажется, добавляет объект dropzone
к данному element
.
Итак, вы можете сделать что-то вроде этого:
var $dropZone = $("#mydropzone").dropzone({ /*options*/ });
// ...
$dropZone[0].dropzone.processQueue();
Я использую jQuery для работы с dropzone. например.
$("#mydropzone").dropzone({ /*options*/ });
Мне нужно получить экземпляр Dropzone, чтобы я мог вызвать этот метод:
myDropzone.processQueue()
Как я могу это достичь? Возможно ли это?
Другими словами, как я могу инициализировать зону сбрасывания с помощью
$("#mydropzone").dropzone({ url: "/file/post" });
но в то же время получите экземпляр объекта, как если бы я инициализировал его, используя:
var myDropzone = new Dropzone("#mydropzone", { url: "/file/post"});
поэтому я могу позвонить:
myDropzone.processQueue()
Большое спасибо.
script, кажется, добавляет объект dropzone
к данному element
.
Итак, вы можете сделать что-то вроде этого:
var $dropZone = $("#mydropzone").dropzone({ /*options*/ });
// ...
$dropZone[0].dropzone.processQueue();
Как описано в issue # 180
Вы также можете использовать встроенную функцию Dropzone.forElement
.
var myDropzone = Dropzone.forElement("#mydropzone");
Простой способ получить доступ к экземпляру с помощью jQuery, если он уже был инициализирован:
var dropzone = $(this).get(0).dropzone;
Как указывалось ранее, вы можете использовать forElement
, который, в свою очередь, просто проверяет element.dropzone
, где "element" является нативным (не jquery obj). Итак, чтобы объединить, обобщить, объяснить и расширить предыдущие ответы, вы можете сделать так:
var element = $("#mydropzone")[0]; // this is the way jquery gives you the original dom
или лучше просто в js:
var element = document.querySelector("#mydropzone");
затем получите дропзону вот так:
element.dropzone
Или, более кратко (просто js здесь):
var dzone = document.querySelector("#mydropzone").dropzone
Просто для справки, текущий источник forElement
:
Dropzone.forElement = function (element) {
if (typeof element === "string") {
element = document.querySelector(element);
}
if ((element != null ? element.dropzone : undefined) == null) {
throw new Error("No Dropzone found for given element. This is probably because you're trying to access it before Dropzone had the time to initialize. Use the 'init' option to setup any additional observers on your Dropzone.");
}
return element.dropzone;
};
Это кажется простым с проверкой Dropzone.instances с идентификатором элемента:
function fn_check_has_dropzone_instances(id){
var found = false;
Dropzone.instances.forEach(function(item,index){
if($($(item)[0].element).attr('id').trim()==id.trim()){
console.log(id);
found = true;
}
});
return found;
}