gpt4 book ai didi

html - 访问 ts 中 fileReader onload 函数内的变量

转载 作者:行者123 更新时间:2023-12-02 02:59:21 25 4
gpt4 key购买 nike

我一直在尝试使用文件阅读器从读取 base64 路径上传图像。首先,我使用了类似的代码,

const reader: FileReader = new FileReader();
reader.onload = function(e: any) {
const imgBase64Path = e.target.result;
this.documentBase64 = imgBase64Path;
this.isImageSaved = true;
this.documents.content = imgBase64Path.toString();
};

这里,所有在 onload 中使用“this”声明的变量都没有在外部更新。但是当我更改代码时,

const reader: FileReader = new FileReader();
const this_ = this;
reader.onload = function(e: any) {
const imgBase64Path = e.target.result;
this_.documentBase64 = imgBase64Path;
this_.isImageSaved = true;
this_.documents.content = imgBase64Path.toString();
};

它按预期完美运行。我无法理解第一个代码的错误是什么以及为什么第二个代码工作正常。我希望有人能帮助我理解这一点......

最佳答案

这是范围问题。

您可以使用箭头函数(() => {})如下所示将其保留在范围内

const reader: FileReader = new FileReader();
reader.onload = (e: any) => {
const imgBase64Path = e.target.result;
this.documentBase64 = imgBase64Path;
this.isImageSaved = true;
this.documents.content = imgBase64Path.toString();
};

关于html - 访问 ts 中 fileReader onload 函数内的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60350130/

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