2016-07-23 40 views
0

我需要你的帮助或建议我的刷新功能。我有这个按钮称为刷新,点击时它将刷新(重新排列基于createdAt字段的数据排序)。我一直在努力争取好几天,试图通过重新订阅我不确定它是否是正确的方式来正确地获得此信息。流星JS PubSub基于行动

单击按钮时,是否有正确的方式来重新订阅或重新排序客户端上的集合?非常感谢。

回答

1

是的,你可以用下面的步骤做:

  • 传递排序类型(ASC或DESC)到路由器的查询。
  • 更新服务器的订阅排序。
  • 您还需要更新您的客户端find()方法的排序方式,因为当数据没有变化或很少有文档通过您的重新订阅进行更新时,所以最早的数据总是会在第一时间出现。
  • 您可以在路由器级别或模板级别上订阅或重新订阅集合。如果您使用的是Flow Rotuer,那么您的重新订阅将不起作用,因为流量路由器没有反应。我更喜欢在模板级别使用订阅。使用Iron路由器查询。

下面是代码示例:

Templete.templeteName.onRendered(function(){ 
    this.autorun(function(){ 
     var sort = {}; 
     if(!Router.current().params.query || Router.current().params.query.sortType == 1) { 
      sort.createdAt = 1; 
     } else { 
      sort.createdAt = -1; 
     } 
     //You can use this handle to show/hide loader. 
     var handle = Meteor.Subscribe('subscriptionName', sort); 
    }) 
}) 
Templete.templeteName.helpers({ 
    'data' : function(){ 
     var sort = {}; 
     if(!Router.current().params.query || Router.current().params.query == 1) { 
      sort.createdAt = 1; 
     } else { 
      sort.createdAt = -1; 
     } 

     return collection.find({},{sort:sort}); 
    } 
}); 

Templete.templeteName.events({ 
    'click .refresh' : function(){ 
     var sortType = value //get the value -1 or 1 from html. 
     Router.go('routeNaem',{},{query:{sortType:sortType}}) 
    } 
}); 
+0

感谢你这么多:) –