maler1988
@maler1988
Web-программист (1С Bitrix)

Как интегрировать сторонний jQuery плагин в существующий JS класс?

Есть класс javascript выглядит примерно так:

function JCSmartFilter(ajaxURL, viewMode, params)
{
	this.ajaxURL = ajaxURL;
	this.form = null;
	this.timer = null;
	this.cacheKey = '';
	this.cache = [];
	this.popups = [];
	this.viewMode = viewMode;

//Проверка всяких параметров и т.п.
}

//Некоторые методы этого класса, все добавлены через prototype
JCSmartFilter.prototype.keyup = function(input){
	if(!!this.timer){
		clearTimeout(this.timer);
	}
	this.timer = setTimeout(BX.delegate(function(){
		this.reload(input);
	}, this), 500);
};

JCSmartFilter.prototype.click = function(checkbox){
	$(checkbox).parent('.input-checkbox').toggleClass('checked');

	if(!!this.timer){
		clearTimeout(this.timer);
	}

	this.timer = setTimeout(BX.delegate(function(){
		this.reload(checkbox);
	}, this), 500);
};

//... и т.д.


класс отвечает за управление формой фильтра. Я хочу добавить в него некоторые плагины для улучшения интерфейса фильтра, но при попытке это сделать происходит потеря контекста вызова и в этот момент я не могу использовать методы исходного класса. Например, пытался для бегунков цены прикрутить noUiSlider, в соответствующем месте исходного класса добавил такой код:

//запоминаем поля минимальной/максимальной цены
    minPrice = document.getElementById('MIN_PRICE');
    maxPrice = document.getElementById('MAX_PRICE');

    //Отслеживаем событие обновления noUiSlider (т.е. пользователь передвинул бегунок "минимальной цены" например )
    html5Slider.noUiSlider.on('update', function( values, handle ) {
        var value = values[handle];
    //Проставляем значения из noUiSlider
        if ( handle ) {
            maxPrice.value = Math.round(value);
        } else {
            minPrice.value = Math.round(value);
        }
    //Ну и вот к этому моменту контекст вызова уже потерян  и теперь я не могу вызвать метод reload для того чтобы 
   // ajax-ом отправить форму и получить результат

    });


В итоге вызов потерян, фильтр не работает, я опечален =( . Вот как правильно добавить ( и возможно ли ) сторонний jQuery плагин в существующий JavaScript класс?
  • Вопрос задан
  • 176 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы