我需要允许用户选择要上传的文件,然后需要从用户那里捕获适用于该特定文件的其他所需信息,这些信息将在上传时作为参数发送到服务器。
到目前为止,我一直在通过处理精细上传器 onSubmit 回调并显示带有我需要的输入的模式来做到这一点。如果输入通过验证,我会存储文件 id 和相关参数,否则,如果它们关闭/取消模式,我会调用 Fine-uploader 取消 api 并取消具有给定 id 的文件。
用户可以多次执行此操作,将文件排入标准精细上传器列表,然后他们将按“上传”以实际同时开始上传。
所有这一切都很好,我的问题是因为我启用了“多个”选项,用户可以同时选择或拖动多个文件,但我需要单独向每个文件呈现模态。onSubmit 事件是为每个文件单独触发的,那么在我取消或保存前一个文件之前,如何防止第二个、第三个等模式打开?
作为记录,我实际上是在使用 Backbone/Marionette 并为每个 onSubmit 回调触发一个“文件:添加”事件。这是我创建模态视图并显示它的地方,但是,该解决方案不需要绑定到主干。
此外,如果有更好的方法来使用 Fine-uploader 为文件收集参数,我不一定会使用这种方法 - 只需要确保每个文件都填充了额外的数据,否则无法上传。
这是 Fine Uploader onSubmit 回调:
.on('submit', function(event, id, name) {
var args = {};
args.id = id;
args.fileName = name;
uploadDocsVent.trigger('file:added', args);
})
这是我的代码,它正在侦听该事件,创建文件主干模型,并实例化要在模态区域中显示的视图。
uploadDocsVent.on("file:added", function(args){
var file = new UploadDocuments.File( args );
var addlInfoView = new UploadDocuments.Views.FileInfo({
model: file,
categories: App.uploadedFilesCategories
});
App.appLayout.modalConfirmRegion.show(addlInfoView);
});
在我看来,我有此代码响应模态点击:
onDialogPrimaryClicked: function () {
UploadDocuments.claimsUploadWidget.addFileWithInfo( this.model );
this.trigger("dialog:close");
},
onDialogSecondaryClicked: function () {
UploadDocuments.uploadView.uploader.fineUploader('cancel', this.model.get('id'));
this.trigger("dialog:close");
}
在此先感谢您提供有关如何解决/解决此问题的任何想法。