2016-12-12 38 views
34

içine benim sınıfındaEğik 2 - 'Bu' setTimeout

showMessageSuccess(){ 

    var that = this; 
    this.messageSuccess = true; 

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

    } 

yüzden böyle bir işleve sahip Nasıl bu yeniden yazabilirsiniz kullanma yüzden 'bu' in bir başvuru saklamak zorunda değilsiniz 'o' var mı? SetTimeout içinde 'this' kullanırsam, messageSuccess bool'u değişmez/güncellenir gibi görünmez.

cevap

113

Sen setTimeout içinde this bağlamı korumak için ArrowFunction ()=> kullanmak gerekir.

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

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

Her zaman çalışır. Başka bir problem olabilir. Bunu araştırmanı isterim veya ilgili bir soru sorabilirsin @RomainBruckert – micronyks

+0

Doğru, haklısın ... ilgisiz, üzgünüm! ;-) –