Angular2 Meteor,实现无限滚动的问题(滚动重置到顶部)

尝试做一个无限滚动页面,在用户滚动时显示元素.

因此,每当我检测到滚动到达页面的末尾时,我就会调用

this.recordLimit += 10;
this.subscribe('movements', {limit: this.recordLimit});

那个触发器(自动运行)

        this.autorun(h => {
            if (this.ready()) {
                this.items = Items.find(<potential limit filter here too>);
            }

行.那很有效.但每次this.items = Items.find();调用后,用户的浏览器会向上滚动到顶部.

这可能是因为删除了dom元素,重置了滚动,然后再次添加元素而不恢复前一个滚动位置.

我究竟做错了什么 ?

工作中’明显’的例子:

> https://github.com/barbatus/ng-infinite-scroll/blob/master/scroll-controller.js
> https://github.com/abecks/meteor-infinite-scroll
> http://meteorpedia.com/read/Infinite_Scrolling

@ ###########编辑############ @

实际上,我注意到,在Items.find()之后放一个h.stop()来停止订阅,这个工作……我想上一个芒果游标会更新上一个订阅限制.

但是,我仍然无法理解为什么这会在最初的情况下重新粉刷一切.

最佳答案 我相信问题是你在猜测时再次找到文件.您只应在自动运行中订阅您的出版物.从Angular2& amp;查看
this很好地解释pub / sub的流星教程.

在自动运行中,它将重新运行find()并重新渲染所有文档,这就是为什么您需要在自动运行中仅为您的情况重新运行订阅的原因.由于pub / sub和观察者的工作方式,因为你唯一改变的是你的函数中的“限制”,其余的是相同的,你的发布只返回新文档,并保留以前返回的文档.客户端的find()查询将获取从pub / sub返回的文档,当文档数量发生变化时,它不会重新呈现已获取的文档.

点赞