我正在使用jquery fileupload插件,其方式与Railscasts 381中提供的方式相同。
由于我使用Rails4,Turbolinks给我带来了很多麻烦。
有时插件会加载两次。有时,它根本不会加载。
我尝试了很多选项,但我无法让它正常工作。
现在,我有这个设置:
$(document).ready(function() {
$("#new_picture").fileupload({
dataType: "script",
add: function(e, data) {
$("#picture_submit_button").addClass("disabled");
console.log("data context:" + data.context);
data.formData = $("#new_picture").serializeArray();
var file;
file = data.files[0];
data.context = $(tmpl("template-upload", file));
$("#new_picture").append(data.context);
data.submit();
return $("#page-loading").hide();
},
progress: function(e, data) {
var progress;
if (data.context) {
progress = parseInt(data.loaded / data.total * 100, 10);
return data.context.find(".bar").css("width", progress + "%");
}
},
stop: function(e, data) {
$("#picture_submit_button").removeClass("disabled");
$(".upload").remove();
}
});
});
当我重新加载页面时,没关系。当我转到另一页时,它就消失了。
我尝试使用变量isLoaded在每次更改页面后重新加载插件:
var isLoaded=false;
function documentReadyOperations() {
if(!isLoaded) {
$("#new_picture").fileupload({ ... });
isLoaded = true;
}
}
$(document).bind('page:change', function() {
documentReadyOperations();
});
但这也不起作用。
管理这些插件的正确方法是什么?