2016-08-27 11 views
0

Я реализую бесконечный свиток на Метеор, чтобы отобразить сетку изображений, связанных с большой коллекцией.Метеор бесконечный прокрутки: запрет подписываться на элементы RERender

Когда пользователь находится в конце страницы, я подписываюсь на большее количество элементов, и я увеличиваю количество отображаемых изображений (через мой шаблон.helper).

//SERVER 
Meteor.publish('generalMusics', function(limit){ 
    return Musics.find({}, {limit: limit}); 
}); 

//CLIENT: when the template is created and when the limit of data increases 
//it subscribes again 
Template.t_elementSubHeader.onCreated(function() { 
    Session.set('reqLimit',50); 
    var self = this; 
    //Everytime reqLimit changes I redo the subscribe 
    this.autorun(function(){ 
     self.subscribe('generalMusics', Session.get('reqLimit')); 
}); 

//CLIENT: more elements are sent to the template when reqLimit increases 
Template.t_elementSubHeader.helpers({ 
    data: function() { 
     return Musics.find({}, {limit : Session.get('reqLimit')}); 
    } 
}); 

//Also on client, when the user reach the bottom of the page 
Session.set('reqLimit',Session.get('reqLimit')+50); 

Это хорошо работает, но все элементы шаблона являются повторным рендерингом, и для этого требуется некоторое время. Это очень неудобно для пользователя, я думаю, это требует времени, потому что я показываю картинки, а не текст (мы уже сжимаем фотографии до минимального размера).

Проблема заключается в том, что подписаться, чтобы повторить все элементы шаблона.

Как я могу добавить только новые элементы и предотвратить повторный рендеринг уже отображаемых элементов при подписке?

Мое приложение будет находиться на мобильных устройствах, поэтому я не могу подписаться на множество элементов, а затем просто увеличиваю ограничение в помощнике шаблона.

+0

Пожалуйста, создайте [mcve] – JimHawkins

+0

Некоторый код действительно поможет в диагностике проблемы – Ankit

+0

Я добавил пример – Rzqt

ответ

0

Наконец-то я получил его, я добавил код в html, чтобы подождать, когда подписка будет готова, и я забыл об этом.

Я удалил:

{{#if Template.subscriptionsReady}} 
     {{> Template.dynamic template="t_elementList" data=tabData}} 
{{/if}} 

Бесконечные прокрутки работает как шарм.