我在Meteor上实现无限滚动,以显示链接到大集合的图片网格。
当用户位于页面的末尾时,我订阅了更多元素,并增加了显示的图片数量(通过我的template.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 :(得分:0)
最后我明白了,我在html中添加了一些代码,等待订阅准备就绪,我忘记了。
我删除了:
{{#if Template.subscriptionsReady}}
{{> Template.dynamic template="t_elementList" data=tabData}}
{{/if}}
无限卷轴就像魅力一样。