file.onload中的Typescript变量未定义

时间:2016-07-20 09:59:20

标签: variables scope undefined

  filePhotoValue: any = "xexe";

  sendFile(file) {

    var reader = new FileReader();

    reader.onload = function (e:any) {
      console.log(this.filePhotoValue);
    };

  }

为什么filePhotoValue在reader.onload控制台"undefined"而不是xexe中?没有编译错误,我想将一些值设置为filePhotoValue inside reader.onload。

1 个答案:

答案 0 :(得分:3)

当你进入onload方法时,你会失去"这个"这是方法之外的。要解决此问题,您有两种解决方案: 保存"这个"另一个变量中的上下文:

sendFile(file) {

    var reader = new FileReader();

    var self = this;    

    reader.onload = function (e:any) {
      console.log(self.filePhotoValue);
    };

  }

或将当前上下文绑定到函数:

sendFile(file) {

    var reader = new FileReader();

    reader.onload = function (e:any) {
      console.log(this.filePhotoValue);
    }.bind(this);

  }