我在backbone.js中有一个scroll
事件。但是,当我滚动屏幕时,scroll
事件处理程序似乎没有被触发。 $(windows).scroll()
可以正常工作。这是否意味着scroll
事件不能用于视图?
查看
PhotoListView = Backbone.View.extend({
el: '#photo_list',
events: {
'scroll': function() {
console.log('scrolling!');
}
},
initialize: function() {
this.collection.bind('reset', this.render, this);
},
render: function() {
// ...
}, this);
return this;
}
});
另外,如果我想使用$(windows).scroll()
来处理滚动事件,我应该在哪个部分的backbone.js代码中插入它?以下是我目前放置它的地方。
ROUTER
var AppRouter = Backbone.Router.extend({
routes: {
'': 'explore'
},
explore: function() {
this.photoList = new PhotoCollection();
var self = this;
this.photoList.fetch({
success: function() {
self.photoListView = new PhotoListView({ collection: self.photoList });
self.photoListView.render();
// Check for Scrolling
$(window).scroll(function() {
self.checkScroll();
});
}
});
},
checkScroll: function() {
var contentOffset = $('#photo_list').offset().top;
var contentHeight = $('#photo_list').height();
var pageHeight = $(window).height();
var scrollTop = $(window).scrollTop();
var triggerPoint = 100;
if(contentOffset + contentHeight - scrollTop - pageHeight < triggerPoint) {
this.photoListView.collection.requestNextPage()
.done(function(data, textStatus, jqXHR) {
});
}
}
});
var app = new AppRouter();
Backbone.history.start();
答案 0 :(得分:1)
滚动元素"#photo_list"
时会触发滚动处理程序,因为它绑定在该元素上。
$(window).scroll
用于滚动窗口。