Backbone JS滚动事件处理
Backbone JS scroll event handling
我正在尝试使用 JQuery 和下划线在 backbone JS 中实现滚动事件。在初始化函数中,我添加以下行:
_.bindAll(this, 'filter_list');
$(window).scroll(this.filter_list);
其中 filter_list 是我尝试从数据库中获取下一个 50 个条目的数据的函数。
页面第一次显示数据库中的100条记录。在滚动页面底部,调用 filter_list 函数,该函数具有从数据库中获取接下来的 50 个条目的逻辑。
当滚动条位于页面底部时,滚动事件会触发,但是滚动事件不会调用 filter_list 一次,而是会调用多次,最终会多次从数据库中获取相同的数据。添加相同的结果会更新到页面,即多次显示相同的 50 条记录。
我试过用不同的方式注册事件,但没有用。另外,如果有人能解释一下 backbone JS 中的滚动事件和绑定机制,那就太好了,我在互联网上没有得到任何好东西。
提前致谢
每次滚动条移动时都会触发scroll event,您需要自己完成所有的抓取逻辑。这是一个想法:
var MyView = Backbone.View.extend({
initialize: function() {
_.bindAll(this, 'filter_list');
// also good idea to debounce
this.filter_list = _.debounce(this.filter_list, 300);
// Keep internal fetching state
this.isFetching = false;
$(window).scroll(this.filter_list);
},
filter_list: function() {
if (this.scrollHitPageBottom() && !this.isFetching) {
this.isFetching = true;
this.fetchDBEntries()
.finally(function() { this.isFetching = false });
}
},
...
})
我正在尝试使用 JQuery 和下划线在 backbone JS 中实现滚动事件。在初始化函数中,我添加以下行:
_.bindAll(this, 'filter_list');
$(window).scroll(this.filter_list);
其中 filter_list 是我尝试从数据库中获取下一个 50 个条目的数据的函数。
页面第一次显示数据库中的100条记录。在滚动页面底部,调用 filter_list 函数,该函数具有从数据库中获取接下来的 50 个条目的逻辑。
当滚动条位于页面底部时,滚动事件会触发,但是滚动事件不会调用 filter_list 一次,而是会调用多次,最终会多次从数据库中获取相同的数据。添加相同的结果会更新到页面,即多次显示相同的 50 条记录。
我试过用不同的方式注册事件,但没有用。另外,如果有人能解释一下 backbone JS 中的滚动事件和绑定机制,那就太好了,我在互联网上没有得到任何好东西。
提前致谢
每次滚动条移动时都会触发scroll event,您需要自己完成所有的抓取逻辑。这是一个想法:
var MyView = Backbone.View.extend({
initialize: function() {
_.bindAll(this, 'filter_list');
// also good idea to debounce
this.filter_list = _.debounce(this.filter_list, 300);
// Keep internal fetching state
this.isFetching = false;
$(window).scroll(this.filter_list);
},
filter_list: function() {
if (this.scrollHitPageBottom() && !this.isFetching) {
this.isFetching = true;
this.fetchDBEntries()
.finally(function() { this.isFetching = false });
}
},
...
})