【问题标题】:Subscription behavior for Infinite Scroll Implementation in MeteorMeteor 中无限滚动实现的订阅行为
【发布时间】: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


    【解决方案1】:

    不,订阅不会“重置”并重新获取相同的数据。如果您将重新订阅相同的订阅但使用不同的limit 选项,则发布将仅发送您在客户端上没有的那些文档。因此,每次您滚动到屏幕末尾并(作为此操作的结果)重新订阅时 - 发布正在向客户端发送接下来的 20 条记录。

    这里有一些有用的链接:

    1. Publication behavior when arguments change
    2. Paginating subscriptions

    【讨论】:

    • 所以你的答案只有在我解决包 percolate:find-from-publication 时才有效?或者它也适用于简单的发布-订阅?
    • 它适用于简单的发布/订阅。 percolate:find-from-publication 包与此无关。
    猜你喜欢
    • 1970-01-01
    • 2017-02-17
    • 2017-11-04
    • 1970-01-01
    • 2017-05-02
    • 1970-01-01
    • 2013-01-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多