2017-02-13 3 views
0

Я создал модуль requireJs, где я уже положил все функции:Jquery Обработчик Функция + requireJs

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

}); 

В секции инициализации я определил обработчик Jquery на изменение размера, напоминающих функцию на этом объекте

я tryied таким образом:

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

но dosn't работу, единственное решение, которое я нашел это один здесь ниже, но doens't работу на 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 будет иметь значение undefined внутри метода manageResize. (См Function.prototype.bind подробную информацию о том, как это работает.)

В первой попытке, вы передаете значение возврата из this.manageResize(). Если вы не возвращаете обратный вызов, это не сработает.

Во второй попытке, которая не работает в IE, вы используете функцию стрелки, которая просто не поддерживается ни одним из браузеров IE.

+0

, но теперь у меня есть ошибка, потому что manageResize вызывает другую функцию this.transform: '( – LTasty

+0

Извините, мне удалось забыть бит 'bind'. Вам нужно использовать' .bind (this) ', чтобы убедиться, что' this' в привязке к правильному значению, когда вызывается 'this.manageResize'. – Louis