Как запускать/связывать пользовательские события в образах Backbone.js?
У меня есть Backbone View, который использует iScroll для реализации слайд-шоу.
iScroll публикует событие onScrollEnd
, но я не могу привязываться/подписываться на него внутри представления:
App.Views.Scroller = Backbone.View.extend({
events: {
'onScrollEnd' : 'scrollEnd'
},
initialize: function(){
var self = this;
this.scroller = new iScroll('content-scroller', {
onScrollEnd: function() {
self.trigger('onScrollEnd');
}
});
},
scrollEnd: function(e){
// never called :(
console.log(e);
}
});
Ответы
Ответ 1
Ваше событие onScrollEnd привязано к элементу верхнего вида; scrollEnd вызывается, когда элемент HTML представления получает событие onScrollEnd.
Но вы вызываете событие onScrollend в объекте View, а не в элементе.
Итак, вы, вероятно, захотите сказать $(self.el).trigger('onScrollEnd');
вместо этого или, возможно, напрямую вызовите функцию: self.scrollEnd()
.
Ответ 2
Это может быть не очевидно, но свойство event
в представлениях backbone.js используется только для событий DOM. Пользовательские события должны быть связаны как Джеймс Браун, упомянутый выше.
Ответ 3
Вы должны вызвать функцию напрямую или в init, добавьте это:
self.bind('onScrollEnd', self.scrollEnd);