javascript - 如何在没有闪烁的情况下在 Meteor 中进行分页?

标签 javascript meteor

与此问题相关here , 是否有一种使用 Meteor 实现分页的惯用方法,它不会在客户端显示中间结果(这会导致页面跳转)。

我从排行榜示例中派生了一个应用程序,本质上,在我使用的客户端上:

Template.scores.created = ->
    Meteor.autosubscribe ->
        Meteor.subscribe 'players', Session.get('page_size'), Session.get('current_page'), sortOrder()

和服务器

Meteor.publish 'players', (page_size, current_page, sort) ->
    Players.find({}, sort: sort, skip: (current_page-1)*page_size, limit: page_size)

由于 meteor 订阅新数据然后删除旧数据的方式,所有新项目都会在旧项目被删除之前短暂显示,这会导致我想摆脱的闪烁效果。

最佳答案

我能够实现目前已经足够好的解决方法。它不是很好,因为它确实会导致一些少量的“闪烁”,但假设客户端和服务器运行速度很快,这是可以接受的。

解决方案主要是将模板助手代码从:

Template.scores.players = ->
    return Players.find({}, sort: sortOrder())

到:

Template.scores.players = ->
    return Players.find({}, sort: sortOrder()).fetch().slice(0,Session.get('page_size'))

这会将项目的客户端 View 限制为页面大小的最大值,以便在删除旧项目之前到达客户端的其他项目不会扩展正在查看的项目列表的整体大小。

当项目到达和消失时仍然会出现一些“闪烁”,但是由于列表的大小不会改变,所以它没有没有切片的实现那么糟糕。

关于javascript - 如何在没有闪烁的情况下在 Meteor 中进行分页?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12765995/

相关文章:

javascript - 将数字传递给组件

javascript - meteor 的安装包位于哪里?

html - Bootstrap 内联无法按预期使用 meteor autoforms

meteor - 如何在 angular2-meteor 项目中使用 RxJS?

http - Meteor HTTP.get 导致内容损坏(?)

collections - meteor 允许更新?

JavaScript 递归奇怪的行为?

javascript - 如何将变量转为选项?

javascript - 整页 JS Visual Studio html

javascript - 如何避免使用 java 脚本重置页面刷新/页面加载时的计时器值?