如何重新初始化dropzone元素

时间:2019-04-29 14:38:37

标签: javascript c# asp.net dropzone.js dropzone

我想使用dropzone来显示服务器上已有的图像的缩略图。我正在为房地产网站创建CMS。服务器具有与属性站点关联的图像。页面加载后,我的dropzone的init函数会在dropzone中以缩略图的形式显示给定站点的相关图像。

页面上有一个下拉框,允许用户选择另一个站点。当他们这样做时,我希望dropbox对象基本上可以再次执行init函数中的操作。呼叫服务器并显示与此其他站点关联的缩略图。

(显然)我还没有找到解决方案。通常,我会收到一些类似的东西,例如“ dropzone still Attached”。我似乎看不到任何有用的文档。

任何帮助将不胜感激:)

//我的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 :(得分:0)

我相信您需要再次调用该功能。因为当您尝试附加新图像时,在页面加载中已经定义了dropzone区域。或者您再次调用该init或尝试重置它,以便该dropzone可以重新附加其他图像。