关于javascript:Angular 2 – 在setTimeout中使用’this’

Angular 2 - Using 'this' inside setTimeout

本问题已经有最佳答案,请猛点这里访问。

我在课堂上有这样的功能

1
2
3
4
5
6
7
8
9
10
  showMessageSuccess(){

    var that = this;
    this.messageSuccess = true;

    setTimeout(function(){
      that.messageSuccess = false;
    },3000);

  }

如何重新编写这个函数,这样就不必在"that"var中存储对"this"的引用了?如果在设置超时内使用"this",messagesuccess bool似乎不会更改/更新。


您需要使用arrowfunction ()=>setTimeout中保留this上下文。

1
2
3
4
5
6
// var that = this; // no need of this line
this.messageSuccess = true;

setTimeout(()=>{    //<<<---    using ()=> syntax
      this.messageSuccess = false;
 }, 3000);