Програма за качване на файлове Valums с множество екземпляри

Използвам няколко екземпляра с valums fileuploader, но изглежда, че качващият използва само последните настройки за всеки екземпляр, има ли опция да се избегне това и да се използват локални настройки? Качването върви добре на правилния екземпляр, но елементът в initializeUploader винаги е един и същ, без значение кой екземпляр използвам.

jQuery(function() {
    $("[rel='uploadable']").each(function(){
        initializeUploader($(this).attr("id"))
    })
});
function initializeUploader(anchor) {
    element = document.getElementById(anchor)
    uploader = new qq.FileUploader({
        element: element,
        action: element.getAttribute("data-upload-path"),
        allowedExtensions: ["png", "gif", "jpg", "jpeg"],
        params: {
            authenticity_token: $("meta[name=csrf-token]").attr("content")
        },
        onSubmit: function(id, fileName){
            console.log ($(element))
            $(element).append("<span class='image'><div id='progress-" + id + "'></div></span>")
        },
        onProgress: function(id, fileName, loaded, total){
            var progress = (loaded / total) * 100;
            $("#progress-" + id).progressbar({value: progress})
        },
        onComplete: function(id, fileName, responseJSON){
            image_url = ""
            $.each(responseJSON, function(key, item) {
                if (key == "url")
                    image_url = item
            });

            $("#progress-" + id).remove();
            console.log($(element).parent())
            console.log($(element).closest(".quanta"))
            console.log(image_url)
            $(element).closest(".quanta").css({'width': '300px', 'height': '300px', 'background-color': '', 'background-image': 'url(' + image_url + ')', 'background-size': '100% 100%'})
        },
        debug: true
    });
};

person Mikhail Nikalyukin    schedule 15.02.2012    source източник


Отговори (2)


Изправен съм пред същия проблем. За да разреша проблема си използвах този трик.

       $('a[href="/bg#tabpdf"]').livequery('click', function () {
          initializeUploader($('#pdfuploader')[0]);  
      });
      $('a[href="/bg#tabphotos"]').livequery('click', function () {
          initializeUploader($('#photouploader')[0]);  
      });   

Използвам условни изрази, за да заредя функцията и предадох конкретен параметър на функцията. Дано помогне.

person Kamagatos    schedule 08.03.2012

В initializeUploader вашите променливи element и uploader са глобални. Така че, когато нещата като

    ...
    onSubmit: function(id, fileName){
        console.log ($(element))
        $(element).append("<span class='image'><div id='progress-" + id + "'></div></span>")
    },
    ...

се извикват, той ще извика последната стойност, зададена на element. използвайте "var", така че локалната променлива да бъде уловена и използвана.

person JayC    schedule 08.03.2012