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' 工作的示例:
- 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 和 Meteor 教程中的 this,它很好地解释了 pub/sub。
在自动运行中,它将重新运行 find()
并重新呈现所有文档,这就是为什么您只需要为您的案例重新运行自动运行中的订阅。由于 pub/sub 和观察者的工作方式,由于您唯一更改的是函数中的 "limit",其余部分相同,因此您的发布只会 return 新文档,并保留以前 returned 的。客户端的 find()
查询将从 pub/sub 中获取文档 returned,当文档数量发生变化时,它不会重新呈现已获取的文档。
尝试做一个在用户滚动时显示元素的无限滚动页面。
因此,每次我检测到滚动条到达页面末尾时,我都会调用
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' 工作的示例:
- 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 和 Meteor 教程中的 this,它很好地解释了 pub/sub。
在自动运行中,它将重新运行 find()
并重新呈现所有文档,这就是为什么您只需要为您的案例重新运行自动运行中的订阅。由于 pub/sub 和观察者的工作方式,由于您唯一更改的是函数中的 "limit",其余部分相同,因此您的发布只会 return 新文档,并保留以前 returned 的。客户端的 find()
查询将从 pub/sub 中获取文档 returned,当文档数量发生变化时,它不会重新呈现已获取的文档。