ionic\angular 2:settimeout后字符串不会更新

Era*_*evi 0 javascript angularjs ionic2 angular

我正在尝试使用settimeout(或任何其他回调)更新字符串(类\ tag),但没有成功,它与按钮完美配合(当用户点击按钮进行更新时),但它没有'使用JS settimeout.你能告诉我我在这里失踪了吗?

这是我的代码示例:

export class Page1 {
  constructor() {
this.greet = "Hi, ";
setTimeout(function(){
  this.greet = "Hello, ";
  alert("Done");
 }, 3000);
  }
}
Run Code Online (Sandbox Code Playgroud)

正如你在这个简单的代码中看到的,我可以在3秒后看到警报"完成",但问候语没有更新,我应该以某种方式刷新它吗?

谢谢你的帮助!

伊兰.

yur*_*zui 6

以你的方式this在setTimeout内部回调不是Page1类的实例.您需要使用箭头功能来保留上下文:

setTimeout(() => { // <=== 
  this.greet = "Hello, ";
  alert("Done");
}, 3000);
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅此链接https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Functions/Arrow_functions#Lexical_this