无法使用fileModel在angularjs中上载相同的文件两次

Vis*_*ish 1 file-upload angularjs

我正在使用angular js fileModel指令上传文件,如下所示

angular.module('MyProject').directive('fileModel', ['$parse', function ($parse) {
    return {
        restrict: 'A',
        link: function(scope, element, attrs) {
            var model = $parse(attrs.fileModel);
            var modelSetter = model.assign;
            element.bind('change', function(){
                scope.$apply(function(){
                    modelSetter(scope, element[0].files[0]);
                });
            });
        }
    };
}]);
Run Code Online (Sandbox Code Playgroud)

我在html中使用了以下相同的代码,

 <input type='file' class="imgInp" file-model="tenantLogoFile"/>
Run Code Online (Sandbox Code Playgroud)

如果我选择一个文件,则可以通过$watch在“ tenantLogoFile”上使用来捕获用户选择的文件。但是,如果我应该立即再次上传同一文件(没有刷新页面),$watch则不会被解雇,最终我将无法上传该文件。

$scope.tenantLogoFile = null首次成功上传后,我尝试设置,但是没有用,有人可以帮我吗?

Vis*_*ish 5

伙计们,我发现了以下解决方法,

<input type='file' file-model="myFile" ng-click="clearFileSelection();"/>
Run Code Online (Sandbox Code Playgroud)

我在控制器中编写了一个名为“ clearFileSelection”的函数,并在随后每次单击文件选择器按钮时调用它,以便清除先前的文件内容,函数代码如下。

$scope.clearFileSelection = function(){
        angular.element("input[type='file']").val(null);
    }
Run Code Online (Sandbox Code Playgroud)

我希望这一定会对其他像我这样的奋斗者有所帮助.. Happyyy Coding .. !!