【问题标题】:Load old messages Firebase and AngularFire加载旧消息 Firebase 和 AngularFire
【发布时间】:2016-12-03 02:52:44
【问题描述】:

我尝试加载我的聊天消息的旧消息,例如加载更多或分页操作。

但是angularfire没有limit函数,有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);
        };

【问题讨论】:

    标签: angularjs firebase angularfire


    【解决方案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条记录。

    【讨论】:

      猜你喜欢
      • 2018-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-16
      • 1970-01-01
      • 2022-06-16
      • 2011-06-26
      • 1970-01-01
      相关资源
      最近更新 更多