какому принципу делается постраничная загрузка данных. Заранее извиняюсь за "портянку", но опишу всё что пробовал.
Есть таблица с 5 записями и пагинация под ней. В конструкторе компонента изначально получаем только эти 5 записей (обращаясь к некому подобию API написанному на laravel) и общее количество записей. Как правильно сделать так, чтобы при клике на другую страницу догружался следующий набор записей?
Делал так: this.items = [ ...this.items, ...data['items'] ], в таком случае записи дублировались, но переключались страницы правильно (лишь на последней были видны дубли первых записей).
Потом чтобы избежать дублей при каждом получении новой порции записей push'ил их в массив предварительно проверив на отсутствие такой записи. Но в таком случае после переключения страницы в таблице ничего не выводилось. Выводилось на мгновение лишь в момент когда происходило переключение на другую страницу.
Записи выводятся в ngFor. Читал, что ангуляр просто не видит изменение массива и поэтому не отображает записи после переключения страницы.
Понимаю, что говнокожу, но как такое сделать правильно? Потом на это всё ещё сортировку и фильтрацию вешать буду. С полным набором данных конечно проще всё это было бы.
И может есть какой ресурс где разбираются типовые задачи вроде такой постраничной загрузки данных, добавление/редактирование/удаление записей и т.д.?
у вас бесконечный скролл? или нормальное постраничное отображение?
нормальное постраничное
тогда вам надо с новой пачкой вот так делать this.items = data.items скорее всего
в таком случае потеряются данные той страницы с которой перешли... да и сортировка с фильтрацией не будет работать
я думаю да. иначе как потом делать сортировку и фильтрацию? я вообще думаю, что при каждом переключении нужно просто добавлять в массив новые партии записей... но опять же пока все данные не добавятся сортировка с фильтрацией ведь тоже некорректно работать будут? или ошибаюсь? просто впервые имею дело с фреймворками вроде ангуляра и даже не представляю хотя бы как это выглядеть должно
Вы сортируете и фильтруете на клиенте?
думаю правильнее было бы делать это на сервере. но раз в тестовом задании для фронтендера по которому изучаю про них говориться, то видимо предполагается, что на клиенте нужно сделать. Хотя мне кажется это не совсем правильным
Вот и я не могу представить как вы с паджинацией на сервере хотите сортировать и фильтровать на клиенте
вот и у меня это не очень укладывается... по-моему либо всё на клиенте (и все данные получать полностью в конструкторе) или на сервер передавать порядок и поле для сортировки и при каждом изменении сортировки тянуть опять все данные, что не оч хорошо ведь (постоянно долбить базу)
второй вариант норм
пардон. не понял) второй вариант как раз ведь про "тянуть всю базу на клиента" или я не так понял?
> на сервер передавать порядок и поле для сортировки
и соответственно куча запросов к базе получается ведь... я "немного" туплю походу) извиняюсь)
не куча, а один на страницу
Обсуждают сегодня