我创建了一个requireJs模块,其中已经放置了所有功能:

define(['Scrollbar','module'],function(Scrollbar,module){
     return{
        init:function(){
            //CODE
        },
        manageScroll:function(){
            //CODE
        },
        manageResize:function(){
            //CODE
        },
        transform(){
            //CODE
        }
    }

});


在init部分中,我在调整大小时定义了一个处理程序Jquery,它调用此对象上的函数

我以这种方式尝试:

init:function(){
    this.transform();
    jQuery(window).resize(this.manageResize());
},


但这不起作用,我发现的唯一解决方案是下面的解决方案,但不适用于IE。

init:function(){
    this.transform();
    jQuery(window).resize(()=>this.manageResize());
},


您有什么建议或更好的解决方案吗?

谢谢

最佳答案

您需要将回调传递给jQuery(window).resize()。像这样:

init:function(){
    this.transform();
    jQuery(window).resize(this.manageResize.bind(this));
},


我们需要使用.bind(this),否则thisundefined方法内部将具有值manageResize。 (有关其工作方式的详细信息,请参见Function.prototype.bind。)

在第一次尝试中,您要传递this.manageResize()的返回值。除非您返回回调,否则它将无法正常工作。

第二次尝试在IE中不起作用,您正在使用箭头功能,而任何IE浏览器均不支持该功能。

09-17 14:22
查看更多