首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在typescript中引用此内容

无法在typescript中引用此内容
EN

Stack Overflow用户
提问于 2017-07-26 17:44:43
回答 3查看 137关注 0票数 0

我的angular2应用程序中有一个文件上传,它将文件以字节数组的形式发送到the服务。我使用文件读取器创建一个bytearray,它有一个onload-event。在这种情况下,我不能使用this.uploadService引用我的uploadService。

代码语言:javascript
复制
public uploadHandler(event) {
    var reader = new FileReader();
    reader.onload = function() {
        var arrayBuffer = this.result, array = new Uint8Array(arrayBuffer), binaryString = String.fromCharCode.apply(null, array);
        //this.uploadService.DoUpload(binaryString);
    }
    reader.readAsArrayBuffer(event.files[0]);
}

我试着使用胖箭头,但我不能再引用结果。

代码语言:javascript
复制
reader.onload = () => {
    //this.result does not exist anymore!
    var arrayBuffer = result, array = new Uint8Array(arrayBuffer), binaryString = String.fromCharCode.apply(null, array);
    this.uploadService.DoUpload(binaryString);
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-07-26 17:50:40

胖箭头是正确的方向。您也可以从reader变量中获得结果,而不是这样。所以它可能看起来像这样

代码语言:javascript
复制
public uploadHandler(event) {
    var reader = new FileReader();
    reader.onload = () => {
        var arrayBuffer = reader.result;
        var array = new Uint8Array(arrayBuffer);
        var binaryString = String.fromCharCode.apply(null, array);
        this.uploadService.DoUpload(binaryString);
    };
    reader.readAsArrayBuffer(event.files[0]);
}
票数 3
EN

Stack Overflow用户

发布于 2017-07-26 17:47:22

我会试一试:

代码语言:javascript
复制
reader.onload = (event: any) => {
  console.log(event.target.result); // result should exist
};
票数 2
EN

Stack Overflow用户

发布于 2017-07-26 18:42:30

我认为这应该可以解决您的问题,或者至少是一些看起来类似的方法,因为您在this绑定方面有问题。

代码语言:javascript
复制
public uploadHandler(event) {
    var reader = new FileReader();
    var that = this;
    reader.onload = function() {
        var arrayBuffer = this.result, array = new Uint8Array(arrayBuffer), binaryString = String.fromCharCode.apply(null, array);
        that.uploadService.DoUpload(binaryString);
    }
    reader.readAsArrayBuffer(event.files[0]);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45323244

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档