Вы можете использовать Backbone.View
события хеширования, чтобы избежать каких-либо проблем с областью (см документации here). Что-то вроде следующего:
events: {
'slidestop #slider-fill': 'handleSlideStop'
},
handleSlideStop: function() {
// Not sure where size param is coming from, but assuming
// you can set it as a property of the view somewhere.
console.log('Size', this.size);
}
Другой альтернативой было бы использовать метод привязки Underscore, который позволит вам делегировать обратный вызов именованной функции в вашей точки зрения и указать область, в которой он называется. Это будет выглядеть примерно так:
registerSliderControlEvents: function(){
$("#slider-fill").on('slidestop', _.bind(this.myFunction, this));
},
myfunction: function(size){
//....some code
}
Я всегда чувствую себя немного грязный, когда мне приходится прибегать к that
или self
для решения проблем области видимости и будет пытаться избежать его, если это возможно. Я новичок в JavaScript, но, возможно, просто нужно принять его как необходимое зло;)
[this] (http://stackoverflow.com/questions/15138163/in-backbone-js-view- how-do-i-call-another-function-from-jquery-each) также работали бы здесь: / – Cyclone