我正在尝试将一个csv文件加载到AngularJS中,这样我就可以对内容进行一些操作。它并没有像我希望的那样工作。为了测试它是否正确加载,我将它加载到一个文本区域中查看内容。
当我加载文件时,它说它已正确加载,但onload()事件似乎没有触发,直到我加载第二个CSV文件,在这种情况下,第一个文件显示在文本区域中。
于飞:
<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);
});
};
当我把这个放到JSFiddle中时,这个文件根本不出现在文本区域中。我是JSFiddle的新手,所以我不知道为什么会发生这种情况。
任何帮助都将不胜感激。
3条答案
按热度按时间0yg35tkg1#
对代码的某些行重新排序,希望注解足够说明问题
参考:FileReader at MDN
new9mtju2#
这只是HTML中的一个小改进:
和控制器:
Ref
9ceoxa923#
如果不想使用
$scope.$apply()
,可以使用$timeout
: