2016-10-23 6 views
0

Я обнаружил, как я могу сделать пользовательскую смену dropzone queue, но он меняет только отображение файлов, и я получаю ошибку «Uncaught TypeError: queue.forEach не является функцией» , Как я могу заставить это работать?Dropzone.js + JQuery UI sortable queue

$("#demo-upload").sortable({ 
    items: '.dz-preview', 
    cursor: 'move', 
    opacity: 0.5, 
    containment: '#demo-upload', 
    distance: 20, 
    tolerance: 'pointer', 
    stop: function() { 
     var newQueue = ''; 
     var queue = dd.files; 
     $('#demo-upload .dz-preview .dz-filename [data-dz-name]').each(function (count, el) { 
      var name = el.getAttribute('data-name'); 
      queue.forEach(function (file) { 
       if (file.name === name) { 
        newQueue.push(file); 
       } 
      }); 
     }); 

     dd.files = newQueue; 

    } 
}); 

ответ

0

Я искал решение, и я нашел точную реализацию в этом проекте CodePen. Link to the implementation (Dropzone.js + jQueryUI Sortable)

HTML-

<form action="/upload" class="dropzone" drop-zone="" id="file-dropzone"></form> 
    <ul class="visualizacao sortable dropzone-previews" style="border:1px solid #000"> 

    </ul> 
<div class="preview" style="display:none;"> 
    <li> 
    <div> 
    <div class="dz-preview dz-file-preview"> 
     <img data-dz-thumbnail /> 
    <div class="dz-progress"><span class="dz-upload" data-dz-uploadprogress></span></div> 
    <div class="dz-success-mark"><span>✔</span></div> 
    <div class="dz-error-mark"><span>✘</span></div> 
    <div class="dz-error-message"><span data-dz-errormessage></span></div> 
    </div> 
    </div> 
    </li> 
</div> 

CSS-

@import url('https://cdnjs.cloudflare.com/ajax/libs/dropzone/4.0.1/min/dropzone.min.css'); 
.sortable { 
    padding: 0; 
    -webkit-touch-callout: none; 
    -webkit-user-select: none; 
    -khtml-user-select: none; 
    -moz-user-select: none; 
    -ms-user-select: none; 
    user-select: none; 
} 
.sortable li { 
    float: left; 
    width: 120px; 
    height: 120px; 
    overflow:hidden; 
    border:1px solid red; 
    text-align: center; 
    margin:5px; 
} 
li.sortable-placeholder { 
    border: 1px dashed #CCC; 
    background: none; 
} 

JS

$(document).ready(function(){ 
$('.sortable').sortable(); 

}); 

//DropzoneJS snippet - js 
$.getScript('https://cdnjs.cloudflare.com/ajax/libs/dropzone/4.0.1/min/dropzone.min.js',function(){ 
    // instantiate the uploader 
    $('#file-dropzone').dropzone({ 
    url: "/upload", 
    maxFilesize: 100, 
    paramName: "uploadfile", 
    maxThumbnailFilesize: 99999, 
    previewsContainer: '.visualizacao', 
    previewTemplate : $('.preview').html(), 
    init: function() { 
     this.on('completemultiple', function(file, json) { 
     $('.sortable').sortable('enable'); 
     }); 
     this.on('success', function(file, json) { 
     alert('aa'); 
     }); 

     this.on('addedfile', function(file) { 

     }); 

     this.on('drop', function(file) { 
     console.log('File',file) 
     }); 
    } 
    }); 
}); 
$(document).ready(function() {}); 
+0

Существует dropzone.js, которая позволяет перетаскивать элементы, такие как изображения или другие файлы для загрузки с вашего компьютера r, и есть jquery UI sortable, который позволяет вам сортировать элементы html путем перетаскивания. После того, как вы перетащите файлы/изображения со своего компьютера, они упорядочиваются в том порядке, в котором вы их бросили. Поэтому вопрос состоял в том, как правильно их организовать. В ссылке codepen, которую я опубликовал, то же самое было реализовано. – spoonsearch