【发布时间】:2015-03-10 08:59:22
【问题描述】:
假设我正在渲染一堆帖子。
{{#each posts}}
{{>post}}
{{/each}}
我收到一堆按日期排序的帖子。
Posts.find({}, {sort:{name: 1, date:-1}, limit: Session.get('limit')}).fetch()
正如您对移动应用程序所期望的那样,我在这里进行了一些反应性滚动。但现在的问题是,当有人发布新内容时,一切都变了。我的滚动位置保持不变,但我不再看同一个帖子。
任何想法如何让它工作?
编辑:
在我看来,最优雅的解决方案就是颠倒我们对滚动的看法。如果我们以另一种方式对帖子进行排序 - 最旧的在顶部,那么新帖子将最终在底部并且不会弄乱 scrollTop 位置。
编辑 2:
我忘了提——我不知道我要插入的元素的高度。否则我可以接受ugly brute force method。
【问题讨论】:
-
这里只是集思广益,但如果您使用集合挂钩包,您可以在 Posts.find() 函数之后在 scrollTo 上触发它。可能是一种更简单的方法。
-
我考虑过使用
Cursor.observe,但那是一个巨大的痛苦,我相信它会有些卡顿。看看我的编辑——这里太长了 -
一种方法是让帖子从顶部滑入(即从高度 0 到 500 像素),同时使页面以与帖子相同的速度滚动滑入(即使帖子滑入超过 650 毫秒,滚动也超过 650 毫秒)
-
是的,但我还要提一个问题——我不知道我要插入的元素的高度...
-
您可以使用 javascript 来获取元素高度,我知道您可以使用 jQuery 确定有一个原生 JS 等价物。实际上可能只是 .height
标签: javascript meteor meteor-blaze