Angular 2 - 在setTimeout中使用'this'

时间:2016-12-12 17:19:16

标签: javascript angular scope

我的课程中有这样的功能

  showMessageSuccess(){

    var that = this;
    this.messageSuccess = true;

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

  }

如何重新编写此代码,以便我不必在'that'var中存储对'this'的引用?如果我在setTimeout中使用'this',则messageSuccess bool似乎不会更改/获取更新。

1 个答案:

答案 0 :(得分:262)

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

// var that = this; // no need of this line
this.messageSuccess = true;

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