2016-07-23 98 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

感謝你這麼多:) –