2016-02-22 4 views
0

Я ищу решение для обработки моих собственных сообщений, которые вставляются как липкие элементы в верхней части страницы, а не в dropzone в соответствии с шаблоном предварительного просмотра для каждого файла в dropzone -контейнер.Dropzone: глобальные события и пользовательские сообщения

Моя проблема заключается в том, что я удаляю недопустимые файлы и когда пользователь выбирает 100 файлов и максимум 20 разрешено, 80 файлов удаляются из контейнера dropzone, но также 80 сообщений об ошибках взорвут мой экран. На данный момент мне не интересно, какой файл и почему он не может быть загружен.

Есть ли что-то вроде глобального события dropzone-события, которое вызывается только один раз, если условие является истинным или другой способностью справиться с этим?

dropzone.on("complete", function (file) { 
    if (!file.accepted){ 
     dropzone.removeFile(file); 
     Messages.showError("Some files are not valid and have been removed "); 
    } 
}); 
+0

у вас контролируемое события doc на сайте dropzone http://www.dropzonejs.com/#event-list, вместо того, чтобы запускать ваше Message.show выше, почему бы не установить переменную, поэтому, если какой-либо сбой установлен на true, то на 'successmultiple'event проверьте, является ли его истинное и последующее сообщение –

+0

проблемой, что «successmultiple» вызывается, когда загрузка завершена. Я устанавливаю «autoProcessQueue: false», поэтому ни одно из этих событий не вызывается до тех пор, пока пользователь не нажмет кнопку «Загрузить». идея хорошая, но правильное событие отсутствует. – Steve

ответ

0

Я думаю, что вы ищете maxfilesreached вы можете сделать

dropzone.on("maxfilesreached", 
function (file) { 
     Messages.showError("Some files are not valid and have been removed "); 
); 

Но я думаю, что Dropzone санкционирован способ установить событие в init

Dropzone.options.dropzone = { 
    maxFiles: 20, 
    accept: function(file, done) { 
    console.log("all uploaded"); 
    done(); 
    }, 
    init: function() { 
    this.on("maxfilesreached", function(file){ 
     Messages.showError("Some files are not valid and have been removed "); 
    }); 
    } 
}; 
+0

К сожалению, это не сработает, так как «maxfilesexceeded» также запускается для каждого файла, который добавляется в контейнер. это также будет обрабатывать только maxFiles, а не недопустимые файлы, тогда как «file.accepted» является ложным, даже если предел был достигнут или был добавлен недопустимый тип файла:/ – Steve

+0

как насчет 'maxfilesreached'? – Matt

+0

«maxfilesreached» также находится в разделе с заголовком «Все они получают файл как первый параметр» - поэтому он вызывается для каждого добавляемого файла. – Steve

Смежные вопросы