我如何实现一个"加载更多"流星收集按钮

时间:2014-11-23 15:31:32

标签: javascript node.js meteor

*******更新********

我使用下面的建议问了另一个问题......但是使用Iron-Router RouteController

call method in Iron-Router RouteController from Template.tmpl.helpers() not working


基本上我想做的是有一个按钮,可以在客户端上将更多记录加载到我的集合中。我在数据库中有一个未知数量的记录,但我只想将最新的500个左右发送到客户端。

我正在尝试模仿“继续搜索服务器”功能。我不是在寻找分页解决方案。

建议?

-------编辑添加代码------------

这是在我的/server/publications.js文件中:

Meteor.publish('clients', function( requestOptions ){
  check(requestOptions, Object)
  var options = _.extend(opts, requestOptions)
  return Clients.find(baseQuery, options)
})

,这是在我的/lib/router.js文件中:

Router.route('/clients', {
  name : 'clientList',
  waitOn : function(){
    return Meteor.subscribe('clients', {limit:500})
  }
})

基本上我想显示最后500个新客户端,但允许最终用户“加载更多”或“加载所有”。我不确定如何对订阅做出反应......

load more button

1 个答案:

答案 0 :(得分:0)

将此事件处理程序附加到承载按钮的模板:

Template.clients.events({
 "click .load-more-button": function (event, template) {
   template.skipped += 500;
   template.subscriptions.push(Meteor.subscribe("client", {
     limit: 500, 
     skip: template.skipped
   }));
 }
});

Template.clients.created = function () {
  this.subscriptions = [];
  this.skipped = 0;
};

//Stop the subscriptions when template is destroyed
Template.clients.destroyed: function () {
  _.invoke(this.subscriptions, "stop");
};

只要您的客户端游标没有设置限制,它就应该有效,但这也意味着其他模板等加载的任何客户端都会出现在列表中。