В этом примере кода представление Backbone привязано к ранее существующему элементу DOM. Событие прокрутки запускается, как ожидалось.
В этом альтернативном образе представление Backbone отображает HTML вместо использования ранее существовавшего элемента DOM. Событие прокрутки не срабатывает.
Зачем?
Основное отличие состоит в следующем:
this.$el.html(template);
Это работает:
$(function(){
var MyView = Backbone.View.extend({
className: 'scrollbox',
events: {
'click': 'onClick',
'scroll': 'onScroll'
},
initialize: function() {
this.render();
},
render: function() {
var template = '<div class="filler"></div>';
$('body').append(this.$el);
this.$el.html(template);
},
onClick: function() {
console.log('click');
},
onScroll: function() {
console.log("scroll");
}
});
var App = new MyView();
}());
Ваша скрипка не работает, потому что вы определили свой el с именем класса .scrollbox
, в то время как это должно было быть scrollbox
. Кажется, что нет никакой пользы в создании другого "прокрутки" в этом ".scrollbox".