Sto provando a caricare un file csv in AngularJS in modo da poter eseguire alcune manipolazioni sui contenuti. Non funziona esattamente come voglio. Per verificare se sta caricando correttamente, lo sto caricando in una textarea per visualizzare il contenuto.FileReader non sta caricando il file correttamente utilizzando AngularJS
Quando carico il file, si dice che sia caricata correttamente ma l'evento onload() non sembra essere la cottura fino a quando si carica un secondo file CSV, nel qual caso viene visualizzato il primo file nella textarea.
HTML:
<div>
<input ng-model="csv"
onchange="angular.element(this).scope().fileChanged()"
type="file" accept=".csv" id="fileInput"/>
</div>
<br/>
<div>
<textarea ng-model="csvFile" readonly="true" style="width:99%; height:500px" disabled></textarea>
</div>
JS:
$scope.fileChanged = function() {
$scope.$apply(function() {
var csvFileInput = document.getElementById('fileInput');
var reader = new FileReader();
var csvFile = csvFileInput.files[0];
reader.onload = function(e) {
$scope.csvFile = reader.result;
};
reader.readAsText(csvFile);
});
};
E quando ho messo questo in JSFiddle, il file non viene visualizzata nella textarea a tutti. Sono nuovo con JSFiddle quindi non so perché sta succedendo.
Qualsiasi aiuto sarebbe apprezzato.
è necessario utilizzare $ parse Penso che – aarosil
@aarosil Che cosa vuoi dire? Dove? – UpAllNight
Puoi provare quanto segue: scambiare le righe '$ scope. $ Apply (function()' e 'reader.onload = function (e) {' e ora sposta 'var reader = new FileReader();' prima 'reader.onload 'e' reader.readAsText (csvFile); 'dopo il blocco' reader.onload' – przno