gpt4 book ai didi

javascript - FileReader 没有使用 AngularJS 正确加载文件

转载 作者:太空狗 更新时间:2023-10-29 14:43:07 24 4
gpt4 key购买 nike

我正在尝试将一个 csv 文件加载到 AngularJS 中,以便我可以对内容进行一些操作。它不像我想要的那样有效。为了测试它是否正确加载,我将它加载到文本区域以查看内容。

当我加载文件时,它说它已正确加载,但 onload() 事件似乎直到我加载第二个 CSV 文件才触发,在这种情况下,第一个文件显示在文本区域中。

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);
});
};

当我将其放入 JSFiddle 时,该文件根本没有出现在文本区域中。我是 JSFiddle 的新手,所以我不知道为什么会这样。

如有任何帮助,我们将不胜感激。

最佳答案

重新排序你的一些代码行,希望注释足够解释

$scope.fileChanged = function() {

// define reader
var reader = new FileReader();

// A handler for the load event (just defining it, not executing it right now)
reader.onload = function(e) {
$scope.$apply(function() {
$scope.csvFile = reader.result;
});
};

// get <input> element and the selected file
var csvFileInput = document.getElementById('fileInput');
var csvFile = csvFileInput.files[0];

// use reader to read the selected file
// when read operation is successfully finished the load event is triggered
// and handled by our reader.onload function
reader.readAsText(csvFile);
};

引用:FileReader at MDN

关于javascript - FileReader 没有使用 AngularJS 正确加载文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26165919/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com