169 похожих чатов

Всем привет. недавно начал ковыряться с ангуляром. подскажите плиз по

какому принципу делается постраничная загрузка данных. Заранее извиняюсь за "портянку", но опишу всё что пробовал.

Есть таблица с 5 записями и пагинация под ней. В конструкторе компонента изначально получаем только эти 5 записей (обращаясь к некому подобию API написанному на laravel) и общее количество записей. Как правильно сделать так, чтобы при клике на другую страницу догружался следующий набор записей?

Делал так: this.items = [ ...this.items, ...data['items'] ], в таком случае записи дублировались, но переключались страницы правильно (лишь на последней были видны дубли первых записей).

Потом чтобы избежать дублей при каждом получении новой порции записей push'ил их в массив предварительно проверив на отсутствие такой записи. Но в таком случае после переключения страницы в таблице ничего не выводилось. Выводилось на мгновение лишь в момент когда происходило переключение на другую страницу.

Записи выводятся в ngFor. Читал, что ангуляр просто не видит изменение массива и поэтому не отображает записи после переключения страницы.

Понимаю, что говнокожу, но как такое сделать правильно? Потом на это всё ещё сортировку и фильтрацию вешать буду. С полным набором данных конечно проще всё это было бы.

И может есть какой ресурс где разбираются типовые задачи вроде такой постраничной загрузки данных, добавление/редактирование/удаление записей и т.д.?

15 ответов

13 просмотров

у вас бесконечный скролл? или нормальное постраничное отображение?

Евгений
нормальное постраничное

тогда вам надо с новой пачкой вот так делать this.items = data.items скорее всего

Евгений- Автор вопроса
Smooth Operator
тогда вам надо с новой пачкой вот так делать this....

в таком случае потеряются данные той страницы с которой перешли... да и сортировка с фильтрацией не будет работать

Евгений- Автор вопроса
Smooth Operator
а они нужны?

я думаю да. иначе как потом делать сортировку и фильтрацию? я вообще думаю, что при каждом переключении нужно просто добавлять в массив новые партии записей... но опять же пока все данные не добавятся сортировка с фильтрацией ведь тоже некорректно работать будут? или ошибаюсь? просто впервые имею дело с фреймворками вроде ангуляра и даже не представляю хотя бы как это выглядеть должно

Евгений- Автор вопроса
Smooth Operator
Вы сортируете и фильтруете на клиенте?

думаю правильнее было бы делать это на сервере. но раз в тестовом задании для фронтендера по которому изучаю про них говориться, то видимо предполагается, что на клиенте нужно сделать. Хотя мне кажется это не совсем правильным

Евгений
думаю правильнее было бы делать это на сервере. но...

Вот и я не могу представить как вы с паджинацией на сервере хотите сортировать и фильтровать на клиенте

Евгений- Автор вопроса
Smooth Operator
Вот и я не могу представить как вы с паджинацией н...

вот и у меня это не очень укладывается... по-моему либо всё на клиенте (и все данные получать полностью в конструкторе) или на сервер передавать порядок и поле для сортировки и при каждом изменении сортировки тянуть опять все данные, что не оч хорошо ведь (постоянно долбить базу)

Евгений- Автор вопроса
Smooth Operator
второй вариант норм

пардон. не понял) второй вариант как раз ведь про "тянуть всю базу на клиента" или я не так понял?

Евгений
пардон. не понял) второй вариант как раз ведь про ...

> на сервер передавать порядок и поле для сортировки

Евгений- Автор вопроса
Smooth Operator
> на сервер передавать порядок и поле для сортиров...

и соответственно куча запросов к базе получается ведь... я "немного" туплю походу) извиняюсь)

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Карта сайта