我已经使用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条记录?
如果是这种情况,那么如何在流星中实现无限滚动呢?有什么想法吗?
答案 0 :(得分:2)
不,订阅赢了"重置"并重新获取相同的数据。如果您将重新订阅相同的订阅但具有不同的limit
选项,则发布将仅发送您在客户端上没有的文档。因此,每次滚动到屏幕的末尾并(由于此操作)重新订阅 - 发布将向客户端发送接下来的20条记录。
以下是一些有用的链接: