2012-10-07 12 views
6

En relación con esta pregunta here, existe una forma idiomática de implementar la paginación usando Meteor que no muestra resultados intermedios en el cliente (lo que hace que la página salte).¿Cómo hacer la paginación en Meteor sin parpadeo?

he deriva una aplicación de la tabla de clasificación ejemplo, en esencia, en el cliente que estoy usando esto:

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

y el servidor

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

Debido a la forma en que se suscribe de meteoros a los datos nuevos y luego elimina los datos antiguos, todos los elementos nuevos se muestran brevemente antes de que se eliminen los elementos anteriores, lo que genera un efecto de parpadeo del que me gustaría deshacerme.

+0

Es una solución, ¿pero tal vez solo puede agregar más datos en lugar de reemplazarlos (como InfiniteScroll)? –

+0

¿Cómo renderizas la lista de jugadores? Con un helper de plantilla o 'Meteor.renderList'? – Andreas

+0

@Taylor puede aceptar su propia respuesta :) – Rahul

Respuesta

3

Pude implementar una solución que es bastante buena por ahora. No es genial, ya que conduce a una pequeña cantidad de "parpadeo", pero es razonablemente tolerable suponiendo que el cliente y el servidor se ejecutan rápidamente.

La solución fue principalmente para cambiar el código ayudante Plantilla de:

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

a:

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

esto limita la vista de cliente de elementos a un máximo del tamaño de la página, de modo que adicional los artículos que llegan al cliente antes de que se eliminen los artículos viejos no amplían el tamaño general de la lista de artículos que se ven.

Todavía hay algún "parpadeo" que resulta cuando los artículos llegan y desaparecen, sin embargo, dado que el tamaño de la lista no cambia, no es tan malo como la implementación sin la porción.

+0

¿Por qué buscar y rebanar y no omitir y limitar? – Mitar

Cuestiones relacionadas