Ich versuche eine CSV-Datei in AngularJS zu laden, damit ich den Inhalt manipulieren kann. Es funktioniert nicht ganz so, wie ich es möchte. Um zu testen, ob es korrekt geladen wird, lade ich es in ein Textfeld, um den Inhalt anzuzeigen.FileReader lädt die Datei nicht korrekt mit AngularJS
Wenn ich die Datei lade, heißt es, dass sie korrekt geladen ist, aber das onload() - Ereignis scheint nicht zu zünden, bis ich eine zweite CSV-Datei lade. In diesem Fall wird die FIRST-Datei im Textfeld angezeigt.
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);
});
};
Und wenn ich dies in JSFiddle setzen, wird die Datei nicht in das Textfeld überhaupt erscheinen. Ich bin neu mit JSFiddle, also weiß ich nicht, warum das passiert.
Irgendwelche Hilfe würde geschätzt werden.
Sie müssen $ parse verwenden Ich denke, – aarosil
@Aarosil Was meinst du? Woher? – UpAllNight
Können Sie Folgendes versuchen: vertauschen Sie die Zeilen '$ scope. $ Apply (function()' und 'reader.onload = function (e) {' und bewegen Sie jetzt 'var reader = new FileReader();' before reader.onload 'und' reader.readAsText (csvFile); 'nach' reader.onload' Block – przno