2016-12-12 29 views
34

Tôi có một chức năng như vậy trong lớp học của tôigóc 2 - Sử dụng 'này' bên setTimeout

showMessageSuccess(){ 

    var that = this; 
    this.messageSuccess = true; 

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

    } 

Làm thế nào tôi có thể viết lại này vì vậy tôi không cần phải lưu trữ một tham chiếu đến 'này' trong 'cái đó' var? Nếu tôi sử dụng 'this' bên trong setTimeout, bool messageSuccess dường như không thay đổi/được cập nhật.

Trả lời

113

Bạn cần phải sử dụng ArrowFunction ()=> để bảo tồn this bối cảnh trong setTimeout.

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

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

Luôn hoạt động. Có thể có một số vấn đề khác. Tôi muốn bạn điều tra nó hoặc bạn có thể hỏi một câu hỏi có liên quan @RomainBruckert – micronyks

+0

Đúng, bạn đúng ... không liên quan, xin lỗi! ;-) –

Các vấn đề liên quan