8

Sto usando input type="file" per il controllo del caricamento utilizzando js angolari. Ogni volta che faccio clic su Sfoglia, non voglio vedere il file selezionato in precedenza. Per impostazione predefinita, questo sembra essere mantenuto. Può essere raggiunto scrivendo una direttiva? Può essere attivato ogni volta che faccio clic su Sfoglia?Angolare js File di tipo di input - cancella il file precedentemente selezionato

Sto usando un'implementazione bootstrap per sostituire il pulsante di ricerca predefinito con un po 'meglio.

<span class="useBootstrap btn btn-default btn-file"> 
       Browse <input type="file" /> 
      </span> 
+0

vedere se questo aiuta http://stackoverflow.com/questions/15079779/how-to-clear-a-file-input-from- angular-js – user804401

risposta

28

Questo era il modo più semplice, senza utilizzare alcuna direttiva o codice complesso.

Browse <input type="file" ng-click="clear()" 

E nel controller

$scope.clear = function() { 
    angular.element("input[type='file']").val(null); 
}; 
+3

Sì, in effetti questo è un modo più semplice .... Ma non è la strada giusta. Ho attraversato il problema di riscrivere l'intero codice ancora una volta sotto forma di direttive e tutto, ecco perché non posso raccomandare questo approccio. –

+1

Si è lamentato che non è possibile utilizzare jqLite per i selettori. Ma questo ha funzionato bene: var myEl = angular.element (document.querySelector ('# some-id')); – Eddy

+0

Se si desidera un pulsante 'Cancella' o' Annulla' separato, aggiungere un 'id =' all'elemento. Per esempio. 'id =" fileSelector_1 "e poi' angular.element (document.querySelector ('# fileSelector_1')). val (null); 'Funziona per me. Lo uso per cancellare sia i pulsanti 'Salva' e' Annulla', – Mawg

0
here is alternate way to clear input file type. 
HTML ->> 
`<span class="useBootstrap btn btn-default btn-file"> 
    Browse <input type="file" ng-if="clearBtn" /> 
</span>` 

Js ->> 

`//initial loading 
$scope.clearBtn = true; 
// after submit/on reset function 
$scope.submitform = function(){ 
//submit logic goes here; 
//onsuccess function 
$scope.clearBtn = false; 
    $timeout(function(){ 
    $scope.clearBtn = true; 
    }); 
}` 
Problemi correlati