Angular 2" this"无法在嵌套函数中访问全局变量

时间:2016-08-04 08:15:30

标签: javascript angularjs function typescript angular

我对Angular 2很新。想问一下如何访问" task_title"在startTimer()中。 我从console.log()得到的所有内容都是未定义的。我相信"这个"指向函数本身所以我无法获得" task_title"的价值。

无论如何我可以在嵌套函数中访问Typescript中的全局变量吗?

export class DashboardComponent {

    task_title: string;

    myTimer = setTimeout(this.startTimer, 2000);

    updateTask(event: any){
        clearTimeout(this.myTimer);
        this.task_title = event.target.value;
        this.myTimer = setTimeout(this.startTimer, 2000);
    }

    startTimer() {
        console.log(this.task_title);
        this.myTimer = setTimeout(this.startTimer, 2000);
    };
}

结果:未定义。

3 个答案:

答案 0 :(得分:10)

使用箭头功能或.bind(this)保留this

的范围
myTimer = setTimeout(this.startTimer.bind(this), 2000);
myTimer = setTimeout(() => this.startTimer(), 2000);

答案 1 :(得分:2)

使用像var self = this

这样的参考
export class DashboardComponent {

var self=this;


task_title: string;

myTimer = setTimeout(self.startTimer, 2000);

updateTask(event: any){
    clearTimeout(self.myTimer);
    self.task_title = event.target.value;
    self.myTimer = setTimeout(self.startTimer, 2000);
}

startTimer() {
    console.log(self.task_title);
    self.myTimer = setTimeout(self.startTimer, 2000);
};
}

答案 2 :(得分:1)

使用通话或申请

myTimer = setTimeout(this.startTimer.call(this), 2000);
myTimer = setTimeout(this.startTimer.apply(this), 2000);