Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Backbone.js Fine Uploader如何在允许多个文件的同时为每个文件捕获附加参数_Backbone.js_Marionette_Fine Uploader - Fatal编程技术网

Backbone.js Fine Uploader如何在允许多个文件的同时为每个文件捕获附加参数

Backbone.js Fine Uploader如何在允许多个文件的同时为每个文件捕获附加参数,backbone.js,marionette,fine-uploader,Backbone.js,Marionette,Fine Uploader,我的要求是允许用户选择要上载的文件,然后需要从用户那里捕获适用于该特定文件的其他所需信息,这些信息将在上载时作为参数发送到服务器 到目前为止,我一直在通过使用fine uploader on Submit回调并显示带有所需输入的模式来实现这一点。如果输入通过验证,我将存储文件id和相关参数,否则,如果它们关闭/取消模式,我将调用fine uploader cancel api并取消具有给定id的文件 用户可以多次执行此操作,将文件排队到标准的精细上传器列表中,然后按Upload以同时启动上传 所

我的要求是允许用户选择要上载的文件,然后需要从用户那里捕获适用于该特定文件的其他所需信息,这些信息将在上载时作为参数发送到服务器

到目前为止,我一直在通过使用fine uploader on Submit回调并显示带有所需输入的模式来实现这一点。如果输入通过验证,我将存储文件id和相关参数,否则,如果它们关闭/取消模式,我将调用fine uploader cancel api并取消具有给定id的文件

用户可以多次执行此操作,将文件排队到标准的精细上传器列表中,然后按Upload以同时启动上传

所有这些都很好,我的问题是,因为我启用了多个选项,用户可以同时选择或拖动多个文件,但我需要分别向每个文件显示模式。onSubmit事件分别为每个文件触发,因此如何防止第二个、第三个等模式打开,直到取消或保存前一个

作为记录,我实际上使用了主干网/木偶网,并为每个onSubmit回调触发一个file:added事件。这就是我创建模式视图并显示它的地方,但是,解决方案不需要绑定到主干

此外,如果有更好的方法使用fine uploader为文件收集参数,我不一定会使用这种方法-只需要确保每个文件都填充了额外的数据,否则无法上载

以下是提交回调时的精细上载程序:

.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");
}

提前感谢您提供的有关如何处理/绕过此问题的任何想法。

安德鲁-我想我知道您的意思。很明显,您只是希望Fine Uploader仅在用户在onSubmit处理程序中显示该文件的模式中提交信息后处理一批选定文件中的文件。您正在寻找的是一种在onSubmit处理程序中返回承诺或延迟的方法。这将允许你打电话给Fine Uploader,说继续,上传/提交这个文件,并在你的用户提交了相关的模式后转到下一个

我已经创建了一个类来实现。Fine Uploader此时仅对onPasteReceived回调遵守作为有效返回值的承诺。允许它作为其他回调(如onSubmit)的有效返回值可能是有意义的。这将允许您推迟文件的上载/提交,直到用户处理了相关的模式。由于Fine Uploader在单文件模式下的工作方式,将multiple选项设置为false可能是您现在想要的选项,也可能不是


我认为允许在一些回调中返回承诺可能是有价值的,比如这个回调,以允许用户交互。你能参加Github项目吗?在那里,我们可以进行更多的讨论,您可以跟踪我放入库中的任何相关更改的进度

我最近回答了一个有点类似的问题,一个用户希望在每个提交的文件旁边放置文本字段。也许这种方法会更好?如果这对你有任何帮助,请告诉我。如果没有,请告诉我,我们将从那里开始。谢谢你,雷。我一定会看一看,看看这种方法是否能在我们的设计中发挥作用。另外,谢谢你对这个插件所做的工作,它真的很棒!我尝试了一下,但我认为这在我们的案例中行不通。我们必须为每个文件提供2个选择输入和一个文本输入,UI开始看起来非常繁忙,特别是考虑到框架中已经存在的其他UI元素、文件名、操作链接、消息、,等等,我想我现在的选择是想办法推迟情态动词,或者干脆关掉多个情态动词。想法?我已经在GitHub上打开了以下功能请求。[连结]