我创建了一个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)
,否则this
在undefined
方法内部将具有值manageResize
。 (有关其工作方式的详细信息,请参见Function.prototype.bind
。)在第一次尝试中,您要传递
this.manageResize()
的返回值。除非您返回回调,否则它将无法正常工作。第二次尝试在IE中不起作用,您正在使用箭头功能,而任何IE浏览器均不支持该功能。