this.set不是函数错误

时间:2016-12-28 17:01:12

标签: javascript ember.js

在我的控制器中,我有这个代码淡出div:

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(…)

虽然我不是'this'关键字的专家,但我的猜测是找不到该函数,因为在popUpFadeout中调用了fading,所以在fading中调用this.set会在popUpFadeOut中查找set方法,不存在。

我的问题是:如何在淡入淡出中访问控制器的set方法?

1 个答案:

答案 0 :(得分:0)

在超时通话中,转到this.fading.bind(this)。然后,您应该在调用set

时使用正确的this绑定