在this code sample中,Backbone视图绑定到预先存在的DOM元素。滚动事件按预期触发。
在this alternate sample中,Backbone视图呈现HTML而不是使用预先存在的DOM元素。滚动事件不会触发。
为什么?
主要区别在于第二个样本是这样做的:
this.$el.html(template);
答案 0 :(得分:1)
这有效:
$(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();
}());
您的小提琴不起作用,因为您使用类名.scrollbox
定义了el,而它应该是scrollbox
。在'.scrollbox'中创建另一个'滚动框'似乎没什么好处。