Как повторно инициализировать элемент dropzone - PullRequest
0 голосов
/ 29 апреля 2019

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

На странице есть раскрывающийся список, который позволяет пользователю выбрать другой сайт. Когда они делают это, я хочу, чтобы объект dropbox снова делал то, что находится в функции init. Сделайте звонок на сервер и отобразите миниатюры, связанные с этим другим сайтом.

Я пока не смог найти решение (очевидно). Обычно я получаю что-то вроде "dropzone все еще прикреплено" с вещами, которые я пробовал. Кажется, я не вижу в документах ничего полезного.

Любая помощь будет оценена :) 1007 *

// мой объект dropzone

var myDropzone = $('#featured-development-dropzone').dropzone({
                    url: '@Url.Action("SaveFeaturedDevelopmentImage","Homepage")',
                    maxFiles: 1,
                    addRemoveLinks: true,
                    init: function () {
                        var myDropzone = this;
                        $("select").on('click', function () {
                            myDropzone.removeAllFiles(true);
                        });
                        var siteID = $('#siteDropdown').find(':selected').val();
                        $.ajax({
                            url: '@Url.Action("GetFeaturedDevelopmentImage", "Homepage")',
                            data: { siteID: siteID },
                            type: 'GET',
                            success: function (data) {
                                console.log(data);
                                if (data.data != null) {
                                    var mockFile = {
                                        name: data.filename,
                                        size: data.fileSize
                                    };

                                    // Call the default addedfile event handler
                                    myDropzone.emit("addedfile", mockFile);
                                    console.log(typeof (data));

                                    // And optionally show the thumbnail of the file:

                                    myDropzone.emit("thumbnail", mockFile, "data:image/png;base64," + _arrayBufferToBase64(data.data));
                                    myDropzone.emit("complete", mockFile);
                                }
                            }
                        });
                        this.on("sending", function (file, xhr, formData) {
                            formData.append("SiteID", siteID);
                            formData.append("imageTypeID", 4);
                            console.log(formData);
                        });
                    }
                });


            var prevSiteID;
            $("select").on('click', function () {
                prevSiteID = this.value;
            }).change(function () {
                var newSIteID = this.value;
               // potentially put code here that will reinitialize the dropbox and display images associated with different site.                

                console.log(prevSiteID);
                console.log(newSIteID);
                changeFeaturedDevelopment(prevSiteID, newSIteID);

1 Ответ

0 голосов
/ 07 мая 2019

Полагаю, вам нужно снова вызвать эту функцию.Так как, когда вы пытаетесь прикрепить новое изображение, зона загрузки зоны уже определена в загрузке страницы.Или вы снова вызываете init или пытаетесь сбросить его, чтобы в dropzone можно было присоединить другое изображение.

...