Я создаю калькулятор на основе ползунка диапазона jQuery UI и выполняю настройку. У меня есть функция bindEvents в моем приложении, которое связывает ползунок slide
события:Почему мой слайдер диапазона jQuery не отвечает на события pubsub?
// this is where I bind all slide events
bindEvents: function() {
// hold on to the value of this
var self = CloudCalc;
// bind the slider's slide event to a data event
self.sl.on('slide', this.setSliderOutputValue);
}
, а затем здесь является обработчиком, который добросовестно выполняет свое событие:
setSliderOutputValue: function (event, ui) {
// hold on to the value of this
var self = CloudCalc;
// show the ui output value on slide event
self.output.html(ui.value + " INSTANCE");
}
Теперь я хочу, чтобы вызвать несколько событий когда пользователь скользит по ползунку. Поэтому я хотел бы использовать шаблон наблюдателя в этой установке, как так (с помощью PubSub плагин addyosmani): стандарт
bindEvents: function() {
// hold on to the value of this
var self = CloudCalc;
// bind the slider's slide event and publish it
self.sl.on('slide', $.publish('slider/moved'));
}
Вот подписка:
subscriptions: function() {
$.subscribe('slider/moved', this.setSliderOutputValue);
}
Так что, когда эта подписка вызывает setSliderOutputValue
событие, я получаю изречение консоли ошибка:
Uncaught TypeError: Cannot read property 'value' of undefined
Это означает, что ссылку на Ui собственность не получает передается setSliderOutputValue
события.
Как передать свойство ui? Пожалуйста, поправьте меня, если я сделаю это неправильно.