如何在我的无限卷轴中首先显示我的热门帖子,按照火力降序的降序排列?

Cod*_*000 5 javascript angularjs firebase firebase-realtime-database

我做了什么(做得不正确):

码:

<script>

    var app = angular.module('app', ['firebase']);

    app.controller('ctrl', function ($scope, $firebaseArray, $timeout) {


            $scope.data = [];
            var _n = Math.ceil(($(window).height() - 50) / (350)) + 1;
            var start = 0;
            var end = _n - 1;
            var lastScore = <%=lastScore%>;
            console.log("FIRST FIRST FIRST LAST SCORE:" + lastScore);
            var firstElementsLoaded = false;

            $scope.getDataset = function() {

                fb.orderByChild('score').endAt(lastScore).limitToLast(_n).on("child_added", function(dataSnapshot) {

                    lastScore = dataSnapshot.child("score").val() - 1;
                    console.log("LAST TOP LIKED:"+ lastScore);

                    $scope.data.push(dataSnapshot.val());
                    $scope.$apply();
                    console.log("THE VALUE:"+$scope.data);

                    $scope.data.splice(start, end).concat($scope.data.reverse());
                    $scope.$apply();
                    start = start + _n;
                    end = end + _n

                    firstElementsLoaded = true;
                });

            };

            $scope.getDataset();

            window.addEventListener('scroll', function() {
                if (firstElementsLoaded == true) {
                   if (window.scrollY === document.body.scrollHeight - window.innerHeight) {
                      $scope.$apply($scope.getDataset());
                    }  
                }
            });

    });

    // Compile the whole <body> with the angular module named "app"
    angular.bootstrap(document.body, ['app']);
Run Code Online (Sandbox Code Playgroud)


题:

如何根据他们的分数(从最高到最低)恢复数据客户端以从上到下获取帖子?


我想要达到的目标:

根据得分降序获取我的帖子,无限滚动有点棘手.

Cod*_*000 0

我最终使用了 inversedScore 属性:

<script>

    var app = angular.module('app', ['firebase']);

    app.controller('ctrl', function ($scope, $firebaseArray, $timeout) {


            $scope.data = [];
            var _n = Math.ceil(($(window).height() - 50) / (350)) + 1;
            var firstElementsLoaded = false;
            var lastScore = -100000;


            $scope.getDataset = function() {

                fb.orderByChild('inversedScore').startAt(lastScore).limitToFirst(_n).on("child_added", function(dataSnapshot) {

                    lastScore = dataSnapshot.child("inversedScore").val() + 1;
                    console.log("LAST LIKE SCORE:"+ lastScore);

                    $scope.data.push(dataSnapshot.val());
                    $scope.$apply();
                    console.log("THE VALUE:"+$scope.data);

                    firstElementsLoaded = true;
                });

            };

            $scope.getDataset();

            window.addEventListener('scroll', function() {
                if (firstElementsLoaded == true) {
                   if (window.scrollY === document.body.scrollHeight - window.innerHeight) {
                      $scope.$apply($scope.getDataset());
                    }  
                }
            });

    });

    // Compile the whole <body> with the angular module named "app"
    angular.bootstrap(document.body, ['app']);

</script>
Run Code Online (Sandbox Code Playgroud)