2017-06-15 6 views
0
public lvl:number = 6; 

constructor(public navCtrl: NavController) { 
    console.log('Start Page Constructor'); 
    setTimeout(function(){ 
     for(var i=0;i<4;i++){ 
      console.log(this.lvl); 
     } 
    }, 5000); 
} 

私はログがあることが予想:値[ts] [ionic2]をログに記録すると、なぜ定義されていませんか?

6 
6 
6 
6 
6 

しかし、私は取得しています:

undefined 
undefined 
undefined 
undefined 
undefined 

私はここで間違ってやっているのか理解していません。

答えて

2

コールバックにfunction() {}の構文を使用すると、thisが変更されるためです。正しいthisを取得するにはarrow functionsを使用します。

setTimeout(() => { 
    for(var i=0;i<4;i++){ 
     console.log(this.lvl); 
    } 
}, 5000); 
0

私はあなたのthisがsetTimeoutメソッド内で機能するようにバインドされだと思います。このような関数をバインドしようとしましたか? setTimeout(function() { ... }.bind(this), 5000)

関連する問題