Столкнулась с задачей реализовать lazy load для таблицы без помощи jQuery. Гугл не помог, примеров более-менее адекватных и подходящий по тематике не нашла. Может кто-то еще сталкивался с такой задачей? Буду рада помощи.
Здесь получаю список статей с сервера и распарсиваю json-ответ в табличку:
ArticleController.prototype.getAllArticles = function(){
var xhr = new XMLHttpRequest();
xhr.open('GET', '/api/posts', true);
xhr.setRequestHeader('Authorization', 'Basic ' + btoa("admin" + ":" + "admin"));
xhr.onreadystatechange = function(){
if(xhr.readyState === XMLHttpRequest.DONE && xhr.status === 200) {
var items = JSON.parse(xhr.responseText);
var output = '';
for (var key in items){
output += '<tr>';
output += '<td>' + items[key].id + '</td>';
output += '<td>' + items[key].title + '</td>';
output += '<td>' + items[key].content + '</td>';
output += '<td>' + items[key].author + '</td>';
output += '<td>' + items[key].creation_date + '</td>';
output += '<td>'+
'<a href="#"><i class="material-icons">edit</i></a>' +
'<a href="#" class="col-lg-1"><i class="material-icons">delete</i></a>' +
'</td>';
output += '</tr>'
}
document.getElementById('articles').innerHTML = output;
};
};
xhr.send();
}
function ArticleController() {
this.indexAction = function() {
this.getAllArticles();
};
};
var articles = new ArticleController();
articles.indexAction();
Вот так выглядит табличка:
Можно. Для этого нужно решить несколько задач.
1. Определение прокрутки страницы в самый низ (когда нужно будет подгрузка)
Для того что бы определить, что страница была промотана в самый низ, нужно взять разницу между двумя величинами: высота всей страницы в пикселях и смещение экрана (или viewport) относительно начала страницы + высота этого самого экрана. Чем меньше разница, тем ниже прокручена страница и тем скорее нужно начать загружать дополнительные строки.
2. Создание на сервере специального метода, который будет возвращать дополнительные строки
Серверный метод должен принимать от клиента информацию о том, сколько строк уже было загружено или с какой строки нужно начать. Обычно это делается так:
/feed.php?offset=20&limit=20
Что означает: верни мне 20 строк начиная с 20ой. Что сервер и должен сделать в виде JSON или уже в отрисованном виде. Зависит от реализации приложения.
3. Выполнение с клиента асинхронного запроса на догрузку таблицы по событию из п.1
У вас эта задача уже решена за исключением отправки сведений о требуемом клиентом количестве строк и смещении.
4. Отрисовка полученных от сервера данных на странице
У вас это так же реализовано.
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости