2016-12-20 1 views
0

Wir wissen in angularjs gibt es keine offizielle Anweisung, Eingabedatei zu manipulieren. Die übliche Methode ist, eine Richtlinie zu definieren, um die Datei zu erhalten, Codes wie folgt:angularjs: Wie bekomme ich das gleiche Bild, wenn ich die selbstdefinierte Anweisung 'fileModel' verwende?

angular.module('app') 
.directive('fileModel', 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]); 
       }) 
       scope.file = (event.srcElement || event.target).files[0]; 
       scope.getFile(scope.file); 
      }) 
     } 
    } 
}) 

die HTML-Codes sind als beblow:

<input id="file-upload" type="file" file-model="myFile" name="defectImage" accept="image/*" /> 

ich die obige Richtlinie Eingangsbild verwenden. Es gibt jedoch einen Defekt in den obigen Codes. Das ist, wenn ich ein selbes Bild mehrfach wähle, werde ich nur die Datei beim ersten Mal bekommen. So, wie man die oben genannten Codes ändert, um das selbe Bild mehrfach zu erreichen und jedes Mal, wenn ich die Datei bekommen kann?

+0

können Sie Ihren HTML-Teil auch hinzufügen, die Richtlinie, die Sie verwenden –

+0

Sind Sie auf Direktive beschränkt oder nicht? –

Antwort

0

Da Sie die gleiche Datei immer wieder auswählen, wird die "change" event nicht ausgelöst (, da die Datei nicht geändert wird !!). Möglicherweise müssen Sie die ausgewählte Datei (scope.file=null) jedes Mal löschen, wenn der Benutzer zum Hochladen einer Datei klickt. Ich hoffe es hilft. :)

Verwandte Themen