Я использую плагин jquery-fileupload (https://github.com/tors/jquery-fileupload-rails) для отображения прогресса загрузки файлов в моем приложении rails. Следующий код ниже работает отлично.
В моем index.html.erb у меня есть
<script id="template-upload" type="text/x-tmpl">
<div class="upload">
{%=o.name%}
<div class="progress"><div class="bar" style="width: 0%;"></div></div>
</div>
</script>
В моих проектах js.coffee file у меня есть
$('#import_form').fileupload
dataType: "json"
add: (e, data) ->
data.context = $(tmpl("template-upload", data.files[0]))
$('#import_form').append(data.context)
data.submit()
progress: (e, data) ->
if data.context
progress = parseInt(data.loaded / data.total * 100, 10)
data.context.find('.bar').css('width', progress + '%')
Но я хочу, чтобы загрузка началась, когда я нажимаю кнопку с идентификатором import_button вместо автоматического. Как я могу это достичь?
Я попытался сделать следующее, но я получил сообщение об ошибке "данные не определены"
$('#import_form').fileupload
dataType: "json"
add: (e, data) ->
data.context = $(tmpl("template-upload", data.files[0]))
$('#import_form').append(data.context)
$("#import_button").off("click").on "click", ->
data.submit()
progress: (e, data) ->
if data.context
progress = parseInt(data.loaded / data.total * 100, 10)
data.context.find('.bar').css('width', progress + '%')
Пожалуйста, помогите Спасибо
Одним из специальных обратных вызовов является обратный вызов add
, поскольку он предоставляет метод отправки для аргумента данных, который начнет загрузку файла:
$('#fileupload').fileupload({
add: function (e, data) {
data.submit();
}
});
Это из jQuery Plugin Wiki
Поэтому, если вы не хотите, чтобы загрузка автоматически загружалась, add
обратный вызов, но не вызывайте метод submit.
if (data) {...}