CODE:
<script>
var app = angular.module('app', ['firebase']);
app.controller('ctrl', function ($scope, $firebaseArray, $timeout) {
console.log(<%=lastID%>);
$scope.data = [];
var _n = Math.ceil(($(window).height() - 50) / (350)) + 1;
var _start = <%= lastID %>;
var _end = <%= lastID %> + _n - 1;
$scope.getDataset = function() {
fb.orderByChild('id').startAt(_start).endAt(_end).limitToLast(_n).on("child_added", function(dataSnapshot) {
$scope.data.push(dataSnapshot.val());
$scope.$apply()
console.log("THE VALUE:"+$scope.data);
});
_start = _start + _n;
_end = _end + _n;
};
$scope.getDataset();
window.addEventListener('scroll', function() {
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>
СИТУАЦИЯ:
lastID - это идентификатор последнего созданного сообщения. Они идут назад (от -1 до lastID).
Это решение работает отлично, за исключением случаев, когда некоторые сообщения удаляются.
(Сообщения упорядочены от самых последних до самых старых (от lastID до -1)).
Например, если есть 16 сообщений, lastID = -16.
Если я удаляю сообщения от -13 до -5 и post -3, lastID остается на -16.
Это означает, что когда страница загружается, сообщения не появляются после того, как загружаются 3 первых сообщения (от -16 до -14), и мне нужно прокручивать их несколько раз, чтобы появился пост -4.
Вопрос:
Как я могу убедиться, что если некоторые сообщения будут удалены, мой Infinite Scroll script пропустит идентификаторы существующих сообщений и просто загрузит 3 ближайших сообщения?
ЧТО Я ПРОВЕРЯЛ:
Я посмотрел на это:
Показать сообщения в порядке убывания
Но я не уверен, как реализовать эти решения внутри моего бесконечного прокрутки. Любые идеи?