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

Angular2 Meteor, issue implementing infinite scroll (scroll reset to top)

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

因此,每次我检测到滚动条到达页面末尾时,我都会调用

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 元素,重置了滚动,然后再次添加了元素,但没有恢复之前的滚动位置。

我做错了什么?

'apparenty' 工作的示例:

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

实际上,我注意到,在 Items.find() 之后放置一个 h.stop() 来停止订阅,这有效...我猜之前的芒果光标已更新为最后的订阅限制。

但是我仍然无法理解为什么在最初的情况下要重新绘制所有内容..

我认为问题在于您正在按照您的猜测再次查找文档。您应该只在自动运行中订阅您的出版物。检查 Angular2 和 Meteor 教程中的 this,它很好地解释了 pub/sub。

在自动运行中,它将重新运行 find() 并重新呈现所有文档,这就是为什么您只需要为您的案例重新运行自动运行中的订阅。由于 pub/sub 和观察者的工作方式,由于您唯一更改的是函数中的 "limit",其余部分相同,因此您的发布只会 return 新文档,并保留以前 returned 的。客户端的 find() 查询将从 pub/sub 中获取文档 returned,当文档数量发生变化时,它不会重新呈现已获取的文档。