2017-02-13 4 views
0

habe ich ein requireJs Modul, in dem ich bereits alle Funktionen setzen:JQuery Handler Funktion + requireJs

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

}); 

Im init Abschnitt I definiert einen Handler JQuery auf der Größe ändern, die eine Funktion für dieses Objekt

erinnern

ich auf diese Weise tryied:

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

aber es dosn't Arbeit, die einzige Lösung, die ich gefunden ist diese hier unten, aber es doens't Arbeit auf IE.

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

Haben Sie einen Vorschlag oder eine bessere Lösung?

Dank

Antwort

1

Sie benötigen einen Rückruf an jQuery(window).resize() zu übergeben. Etwas wie folgt aus:

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

Wir brauchen .bind(this) sonst verwenden this den Wert undefined innerhalb des manageResize Methode haben. (Siehe Function.prototype.bind für Einzelheiten, wie es funktioniert.)

Im ersten Versuch, Sie das Bestehen der Wert Rückkehr von this.manageResize(). Sofern Sie einen Rückruf nicht zurückgeben, kann dies nicht funktionieren.

In Ihrem zweiten Versuch, der nicht in IE funktioniert, verwenden Sie eine Pfeilfunktion, die von keinem der IE-Browser einfach unterstützt wird.

+0

aber jetzt habe ich Fehler, weil manageResize eine andere Funktion aufrufen this.transform: '( – LTasty

+0

Sorry. Ich habe das 'bind' Bit vergessen. Sie müssen' .bind (this) 'verwenden, um sicherzustellen, dass' this' gebunden an den richtigen Wert, wenn 'this.manageResize' aufgerufen wird. – Louis