Angular 2 - 在setTimeout中使用'this'

use*_*143 110 javascript scope angular

我班上有这样的功能

  showMessageSuccess(){

    var that = this;
    this.messageSuccess = true;

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

  }
Run Code Online (Sandbox Code Playgroud)

我怎样才能重写这个,所以我不必在'that'var中存储对'this'的引用?如果我在setTimeout中使用'this',则messageSuccess bool似乎不会更改/获取更新.

mic*_*yks 304

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

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

setTimeout(()=>{    //<<<---    using ()=> syntax
      this.messageSuccess = false;
 }, 3000);
Run Code Online (Sandbox Code Playgroud)

  • 它总是有效。可能还有其他问题。我想让你调查一下,或者你可以问一个相关的问题@RomainBruckert (2认同)