2016-12-03 62 views
0

我嘗試加載舊聊天消息的消息,如加載更多或分頁操作。加載舊消息Firebase和AngularFire

但是,angularfire並沒有限制功能,有endAt,startAt,limitToLast和limitToFirst功能,並且不適用於只獲取舊消息。

這是我的代碼:這個問題,是加載更多的函數刷新整個消息列表不附加消息到列表。

var ref = firebase.database().ref("messages/"+userId+"/"+agencyId); 

     .orderByChild('timestamp') 
     .limitToLast(2); 

     scope.messages = $firebaseArray(ref); 

     scope.loadMore = function(){ 

      ref 
       .orderByChild('timestamp') 
       .limitToLast(4); 

      scope.messages = $firebaseArray(ref); 
     }; 

回答

1

因此,經過大量的研究,思考,反思。我讓我的解決方案爲聊天消息加載更多消息。

var ref = firebase.database().ref(); 
     var messagesRef = ref.child("messages/"+userId+"/"+agencyId); 
     var query = messagesRef 
      .orderByChild("timestamp") 
      .limitToLast(10); 

     var list = $firebaseArray(query); 

     scope.blockMessages = [{ 
      list: list 
     }]; 

     scope.loadMore = function(){ 

      query = messagesRef 
       .orderByChild("timestamp") 
       .endAt(list[0].timestamp) 
       .limitToLast(10); 

      list = $firebaseArray(query); 
      list.$loaded().then(function(x){ 
       scope.blockMessages.unshift({ 
        list:list 
       }) 
      }); 
     }; 

loadMore函數獲取前10條記錄並創建一個新的消息塊。每條消息塊都有10條記錄,每次點擊loadMore查詢最近的10條記錄。