У меня есть несколько Dropzones в моем проекте, которые очень похожи. На одном из них мне пришлось создать минимальную ширину файла, но видео Dropzone не работает с кодом ширины файла. В итоге мне пришлось создать отдельный вызов опций для каждой Dropzone. Это создало много дублированного кода для функций, которые находятся в вызовах обеих опций. Есть ли способ, которым я могу создать выражения именованных функций для всех своих опций и использовать имена, чтобы у меня не было такого большого количества дублированного кода?
Dropzone.options[item.substring(1, item.length)] = {
acceptedFiles: files,
previewTemplate: document.getElementById('tpl').innerHTML,
accept: function(file, done) {
file.acceptDimensions = done;
file.rejectDimensions = function () { done("Image must be at least 450 pixels wide."); }
},
init: function () {
this.on("thumbnail", function (file) {
if (file.width !== undefined) {
if (file.width < 3 * 150) { // File must be at least 3 blocks wide
file.rejectDimensions();
} else {
file.acceptDimensions();
}
}
});
this.on("success", function (file, response) {
// code here, including persist variable, which I need to pass in
generateUIDs(Dropzone.forElement(item).files, persist);
// more code
});
},
sending: function (file) {
Dropzone.forElement(item).removeAllFiles();
},
removedfile: function (file) {
// code here, also need persist for this call
generateUIDs(Dropzone.forElement(item).files, persist);
//more code
}
};
В идеале, я бы хотел, чтобы каждая строка accept, send и removeFile содержала по одной строке для ссылки на выражение именованной функции с передачей моей переменной persist. Мне бы хотелось, чтобы события init делали то же самое.