【发布时间】:2018-02-22 12:02:32
【问题描述】:
我已经使用 Meteor 1.5.0 实现了我自己的无限滚动版本。考虑下面的订阅代码。
Template.App_ViewClients.onCreated(function(){
this.autorun(() => {
Meteor.subscribe('Clients', this.total.get(), this.searchString.get());
});
});
在渲染模板时,初始默认获取 20 条记录。
每当我到达屏幕末尾时,this.total 就会增加 20。所以,首先向下滚动给我 40 条记录,然后是 60 条,依此类推。我必须使用this.autorun,因为searchString 是来自UI 的变量输入,数据必须更改。
下面是我使用的滚动代码。
Template.App_ViewClients.onRendered(function(){
$(window).scroll(function(event){
if($(window).scrollTop() + $(window).height() == $(document).height()) {
console.log('End Reached.');
}
});
});
如果我的 Collection 有 1000 条记录并且我已经滚动了 10 次(即 20*10 = 提取了 200 条记录),那么订阅是否会在我第 11 次滚动到底部时重置并再次获取 220 条记录?所以在第 50 次滚动到底部时,整个订阅被重置,并且一次性获取 1000 条记录?
如果是这种情况,那么如何在流星中实现无限滚动?有什么想法吗?
【问题讨论】:
标签: javascript jquery meteor ecmascript-6 infinite-scroll