3

我的设置如下:

   singleFileUploads: false,
    // To limit the number of files uploaded with one XHR request,
    // set the following option to an integer greater than 0:
    limitMultiFileUploads: undefined,
    maxNumberOfFiles: 1,

我正在尝试让我的客户上传个人图片,成功上传此图片后,我想重置文件选择,并允许我的用户上传另一张图片而不是第一个。

在将 maxNumberOfFiles 设置为 1 之前,该插件只是尝试上传用户将选择的任何新文件以及旧文件,现在,它允许用户每次访问包含该插件的页面仅上传一次文件实例。

这是我迄今为止尝试过的:

$scope.model.resetFiles = function(){
    angular.forEach(
        angular.element("input[type='file']"),
        function(inputElem){
          // angular.element(inputElem).val(null);
          angular.element(inputElem).find('.files').empty();    
         angular.element(inputElem).scope().clear()
    });
}
4

4 回答 4

1

我只是使用这个简单的表单重置解决了它

document.forms["mediaUploader"].reset();

我对文件输入的指令是将文件自动绑定到范围变量。在调用 forms.reset(); 也将 files.length 自动绑定到 0 零,所以效果非常好!

还可以查看 https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.reset

于 2014-08-26T09:10:39.090 回答
1

在插件更新以获得更好的 Angular 支持之前,我找到了一个临时解决方案。

var filePicker = null;

$scope.options = {
    done: function (e, data) {
        filePicker = data;
    }
};

$scope.clearFiles = function () {
    filePicker.scope.clear(filePicker.files);
};

只需将选项添加到指令中,如下所示:

<form file-upload="options" action="import/excelupload" method="POST" enctype="multipart/form-data">
于 2014-06-26T14:07:10.080 回答
1

出于安全原因,Javascript 不允许您以您认为的方式清除文件字段。似乎创建一个新元素并替换旧文件字段就可以解决问题。查看此链接以获取更多详细信息和代码示例。

我见过一些人建议将元素包装在<form>标签中并使用 jQuery 的reset()函数来重置表单,但如果你没有使用完整版的 jQuery,我不相信这包含在默认使用的 jqLit​​e 中通过 AngularJS。

于 2013-10-29T20:40:22.447 回答
0

如果文件字段包含在表单标签内,则使用标准 html 表单重置按钮类型。

<button type="reset" value="Reset">Reset</button>

您还可以将 ng-click 指令放在重置按钮上以执行 $scope 中的任何更改。

<button type="reset" value="Reset" ng-click="formReset()">Reset</button>

$scope.resetForm = function (){

    // Your business logic after form reset.   

}
于 2014-09-13T04:22:14.967 回答