2012-10-07 12 views
6

Bu soru ile ilgili here, istemcide ara sonuçları (sayfa etrafında atlamak neden olur) göstermiyor Meteor kullanarak sayfalandırma uygulanmasının deyimsel bir yolu yoktur.Titremesiz Meteor'da sayfalandırma nasıl yapılır?

Ben istemci üzerinde bu kullanıyorum, özünde, afiş örnek bir uygulamayı türetilmiş ettik: nedeniyle yolu

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

Ve sunucuyu

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

meteor abone yeni verilere ve eski verileri kaldırır, eski eşyaların kaldırılmasından önce tüm yeni öğeler kısa bir süre önce görünür, bu da kurtulmak istediğim titreşen bir etki yaratır.

+0

Bu bir geçici çözümdür, ancak değiştirmeyi (InfiniteScroll-like) eklemek yerine yalnızca daha fazla veri ekleyebilirsiniz. –

+0

Oyuncu listesini nasıl işlersiniz? Şablon yardımcısı veya Meteor.renderList ile mi? – Andreas

+0

@Taylor kendi cevabını kabul edebilirsin :) – Rahul

cevap

3

Şimdilik yeterince iyi olan bir geçici çözüm uygulayabildim. Bazı "titrek" miktarına yol açtığı için harika değil, ancak istemci ve sunucunun hızlı çalıştığı varsayılırsa makul ölçüde kabul edilebilir. Ek böylece, bu sayfa boyutunun maksimum öğelerin istemci görüntüleme sınırı

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

:

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

için:

çözüm Şablon yardımcı kodunu değiştirmek için esas olduğunu Eski öğeler kaldırılmadan önce müşteriye ulaşan öğeler, görüntülenmekte olan öğeler listesinin genel boyutunu genişletmez.

Öğelerin gelmesi ve kaybolmasıyla sonuçlanan bir miktar "titreşim" var, ancak listenin boyutu değişmediğinden, dilim olmayan uygulama kadar kötü değil.

+0

Neden getir ve dilimi atla ve sınırla? – Mitar

İlgili konular