1

我正在开发一个离子聊天应用程序,在 ng-repeat 上实现无限滚动以处理延迟加载。下一个问题是:无限滚动从视图顶部开始(显示第一个最旧的聊天),并在用户滚动底部以显示最新聊天时处理延迟加载。我需要逆向逻辑来显示最后一次聊天,当用户向上滚动时,视图会显示较旧的聊天。

恢复:我需要离子无限滚动从底部位置开始,当用户向上滚动时,视图会显示最旧的聊天。

4

2 回答 2

0

我找到了一些可以帮助您入门的示例。 js小提琴类似的问题

下面是小提琴的代码,我没有创建它。

function Main($scope) {
    $scope.items = [];

    var counter = 0;
    $scope.loadMore = function() {
        for (var i = 0; i < 5; i++) {
            $scope.items.unshift({id: counter});
            counter += 10;
        }
    };

    $scope.loadMore();
}

angular.module('scroll', []).directive('whenScrolled', ['$timeout', function($timeout) {
    return function(scope, elm, attr) {
        var raw = elm[0];

        $timeout(function() {
            raw.scrollTop = raw.scrollHeight;          
        });         

        elm.bind('scroll', function() {
            if (raw.scrollTop <= 100) { // load more items before you hit the top
                var sh = raw.scrollHeight
                scope.$apply(attr.whenScrolled);
                raw.scrollTop = raw.scrollHeight - sh;
            }
        });
    };
}]);

和html代码

<div id="fixed" when-scrolled="loadMore()">
  <ul>
    <li ng-repeat="i in items">{{i.id}}</li>
  </ul>  
</div>
于 2018-08-31T13:07:31.310 回答
0

简单的解决方案,适用于 Ionic 4 :

component.ts1.)使用 javascript反转您的完整消息列表.reverse()。然后你可以对它做所有的 Ion-Infinite-Scroll 逻辑。

2.) 当用 *ngFor 在 Html 中显示消息列表时,再次反转它(fe *ngFor=let message of messages.inverse()

3.) 放入position="top"你的<ion-infinite-scroll>

于 2019-10-19T20:19:46.387 回答