2016-12-28 138 views
0

在我的控制器我有這樣的代碼淡出一個div:this.set不是一個函數錯誤

popUpFadeOut: function(){ 
if(this.get('bid.popUpContainerOpacity') === 0){ 
this.set('bid.popUpContainerOpacity', 1); 
this.set('bid.popUpContainerDisplay', 'block'); 
setTimeout(this.fading, 1000); //popup box fades away after 1 seconds 
} 
}, 

fading: function() { 
    this.set('bid.popUpContainerOpacity', 'bid.popUpContainerOpacity' - 0.1); 

    if (this.get('bid.popUpContainerOpacity') <= 0) 
    { 
     this.set('bid.popUpContainerOpacity', 0); 
     this.set('bid.popUpContainerDisplay', 'none'); 
    } 
    else 
    { 
     requestAnimationFrame(this.fading); 
    } 
}, 

內衰減功能,我得到這個錯誤:

Uncaught TypeError: this.set is not a function(…) 

雖然我'm不是'this'關鍵字的專家,我的猜測是它找不到函數,因爲在popUpFadeout中調用了漸變,所以在漸變中調用this.set會在popUpFadeOut中尋找一個不存在的set方法。

我的問題是:如何訪問我的控制器在衰落內的設置方法?

+0

嘗試'setTimeout(this.fading.bind(this),1000);'而不是 –

+0

@DiogoSgrillo現在它說不能讀屬性'set'的undefined ...)在褪色。 – Jesper

+0

我把'.bind(this)'放在另一個this.fading上,現在它可以工作。謝謝。 – Jesper

回答

0

在您的超時通話中,轉入this.fading.bind(this)。你應該有適當的this綁定被用於呼叫集