2017-02-13 71 views
0

我創建了一個requireJs模塊,其中我已經把所有的功能:Jquery的處理函數+ requireJs

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

}); 

在init部我在其上重新調用此對象上的功能的調整大小所定義的處理程序的Jquery

我tryied這樣:

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

但它不到風度的工作,我發現的唯一的解決辦法是在這裏下面這一個,但它在IE工作好好嘗試。

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

您有任何建議或更好的解決方案嗎?

感謝

回答

1

你需要一個回調傳遞給jQuery(window).resize()。事情是這樣的:

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

我們需要使用.bind(this)否則this將有manageResize方法內的值undefined。 (於它是如何工作的詳細信息,請參閱Function.prototype.bind。)

在第一次嘗試,你傳遞的返回值的this.manageResize()。除非你正在返回一個回調,否則這是行不通的。

在您的第二次嘗試中,在IE中無法正常工作時,您正在使用一個箭頭函數,這是任何IE瀏覽器都不支持的。

+0

但現在我有錯誤,因爲manageResize調用另一個函數this.transform:'( – LTasty

+0

對不起,我設法忘記了'bind'位,您需要使用'.bind(this)'來確保'this'在調用'this.manageResize'時綁定到適當的值。 – Louis