2012-10-07 11 views
6

Correlato a questa domanda here, esiste un modo idiomatico di implementare l'impaginazione usando Meteor che non mostra risultati intermedi nel client (il che fa saltare la pagina).Come eseguire l'impaginazione in Meteor senza sfarfallio?

ho derivato un app dall'esempio classifica, in sostanza, sul client Sto usando questo:

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

e il server

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

A causa del modo in cui sottoscrive meteore a nuovi dati e quindi rimuove i vecchi dati, tutti i nuovi elementi mostrano brevemente prima che i vecchi elementi vengano rimossi, il che porta a un effetto sfarfallio di cui mi piacerebbe sbarazzarmi.

+0

È una soluzione, ma forse è possibile aggiungere altri dati anziché sostituirli (InfiniteScroll-like)? –

+0

Come si esegue il rendering dell'elenco dei giocatori? Con un template helper o 'Meteor.renderList'? – Andreas

+0

@Taylor puoi accettare la tua risposta :) – Rahul

risposta

3

Sono stato in grado di implementare una soluzione che è abbastanza buona per ora. Non è grandioso perché comporta una piccola quantità di "sfarfallio" ma è ragionevolmente tollerabile se si presuppone che il client e il server stiano correndo velocemente.

La soluzione è stata principalmente per cambiare il codice del modello di supporto da:

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

a:

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

questo limita la vista client di elementi ad un massimo della dimensione della pagina, in modo che ulteriore gli elementi che arrivano nel client prima che vengano rimossi gli elementi obsoleti non espandono la dimensione complessiva dell'elenco di elementi visualizzati.

C'è ancora qualche "sfarfallio" che si verifica quando gli elementi arrivano e scompaiono, tuttavia, poiché la dimensione dell'elenco non cambia, non è così male come l'implementazione senza la sezione.

+0

Perché recuperare e affettare e non saltare e limitare? – Mitar