我正在开发一个离子聊天应用程序,在 ng-repeat 上实现无限滚动以处理延迟加载。下一个问题是:无限滚动从视图顶部开始(显示第一个最旧的聊天),并在用户滚动底部以显示最新聊天时处理延迟加载。我需要逆向逻辑来显示最后一次聊天,当用户向上滚动时,视图会显示较旧的聊天。
恢复:我需要离子无限滚动从底部位置开始,当用户向上滚动时,视图会显示最旧的聊天。
我正在开发一个离子聊天应用程序,在 ng-repeat 上实现无限滚动以处理延迟加载。下一个问题是:无限滚动从视图顶部开始(显示第一个最旧的聊天),并在用户滚动底部以显示最新聊天时处理延迟加载。我需要逆向逻辑来显示最后一次聊天,当用户向上滚动时,视图会显示较旧的聊天。
恢复:我需要离子无限滚动从底部位置开始,当用户向上滚动时,视图会显示最旧的聊天。
我找到了一些可以帮助您入门的示例。 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>
简单的解决方案,适用于 Ionic 4 :
component.ts
1.)使用 javascript反转您的完整消息列表.reverse()
。然后你可以对它做所有的 Ion-Infinite-Scroll 逻辑。
2.) 当用 *ngFor 在 Html 中显示消息列表时,再次反转它(fe *ngFor=let message of messages.inverse()
)
3.) 放入position="top"
你的<ion-infinite-scroll>