2016-06-12 7 views
0

UIkitを使用したファイルアップロード機能の作業中です。ウェブページには、ユーザーがファイルを投稿できる複数のアイテムがあります。各項目には異なるIDがあります。設定の変更イニシャライズ後のjqueryを使用したUIkitアップロード

私が欲しいのは、各アイテムについて、ファイルはアイテムIDで指定されたフォルダに入っているということです。しかし、UIkit.uploadSelectが初期化されると、私はもうパラメータを変更することはできません。

アイテムを押すと、関数onclickイベントが発生します:GetTaskInfo();

私はとても多くのことを試みましたが、まだ成功しませんでした。

何か助けていただければ幸いです。

ファイルアップロード機能(のUIKitに呼び出す):ユーザーがアイテムを開く

function Upload(id) { 
    var progressbar = $("#task_info_progressbar"), 
     bar = progressbar.find('.uk-progress-bar'), 
     settings = { 

      action: '/Scrum/Upload', // upload url 

      params: { 
       folder: "scrum", 
       id: id 
      }, 

      allow: '*.(zip)', // allow only zip files 

      filelimit: 1, 

      beforeAll: function (files) { 

      }, 
      loadstart: function() { 
       bar.css("width", "0%").text("0%"); 
       progressbar.removeClass("uk-hidden"); 
      }, 
      progress: function (percent) { 
       percent = Math.ceil(percent); 
       bar.css("width", percent + "%").text(percent + "%"); 
      }, 
      error: function() { 

      }, 
      abort: function() { 

      }, 
      allcomplete: function (response) { 
       bar.css("width", "100%").text("100%"); 

       setTimeout(function() { 
        progressbar.addClass("uk-hidden"); 
       }, 250); 

      }); 
      } 
     }; 

    var select = UIkit.uploadSelect($("#task_info_file_select"), settings), 
     drop = UIkit.uploadDrop($("#task_info_file_drop"), settings); 
} 

機能。

function GetTaskInfo(id) { 
    task_id = $('#task_id'); 
    Upload(task_id); 
} 

のUIKitアップロード機能(http://getuikit.com/docs/upload.html

})(function(UI){ 

"use strict"; 

UI.component('uploadSelect', { 

    init: function() { 

     var $this = this; 

     this.on("change", function() { 
      xhrupload($this.element[0].files, $this.options); 
      var twin = $this.element.clone(true).data('uploadSelect', $this); 
      $this.element.replaceWith(twin); 
      $this.element = twin; 
     }); 
    } 
}); 

UI.component('uploadDrop', { 

    defaults: { 
     'dragoverClass': 'uk-dragover' 
    }, 

    init: function() { 

     var $this = this, hasdragCls = false; 

     this.on("drop", function(e){ 

      if (e.dataTransfer && e.dataTransfer.files) { 

       e.stopPropagation(); 
       e.preventDefault(); 

       $this.element.removeClass($this.options.dragoverClass); 
       $this.element.trigger('dropped.uk.upload', [e.dataTransfer.files]); 

       xhrupload(e.dataTransfer.files, $this.options); 
      } 

     }).on("dragenter", function(e){ 
      e.stopPropagation(); 
      e.preventDefault(); 
     }).on("dragover", function(e){ 
      e.stopPropagation(); 
      e.preventDefault(); 

      if (!hasdragCls) { 
       $this.element.addClass($this.options.dragoverClass); 
       hasdragCls = true; 
      } 
     }).on("dragleave", function(e){ 
      e.stopPropagation(); 
      e.preventDefault(); 
      $this.element.removeClass($this.options.dragoverClass); 
      hasdragCls = false; 
     }); 
    } 
}); 

答えて

1

要求

before: function (settings, files) { 
     settings.params.folder = $("#someID").val() 
} 
を行う前に、設定を変更するには、 "前" documentaion https://getuikit.com/docs/upload.html 使用を参照してください。
関連する問題