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

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

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

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

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

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

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

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

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

15 ответов

11 просмотров

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Какой-то там пердун в 90-х решил, что есть какая-то разная типизация. Кого вообще это волнует?
КТ315
49
void terminal_scroll() { memmove(terminal_buffer, terminal_buffer + VGA_WIDTH, buffer_size - VGA_WIDTH); memset(terminal_buffer + buffer_size - VGA_WIDTH, 0, VGA_WIDTH); ...
Егор
47
Всем привет! Подскажите, пожалуйста, в чем ошибка? Настраиваю подключение к MySQL. Либы лежат рядом с exe. Все как по "учебнику"
Евгений
16
А можете как-то проверить меня по знаниям по ассемблеру?
A A
132
Здравствуйте! У меня появилась возможность купить книгу "Изучай Haskell во имя добра!". Но я где-то слышал, что эта книга устарела. Насколько это правда??
E
22
Здравствуйте! Я вот на stepic решаю задачи на хаскеле https://stepik.org/lesson/8443/step/8?unit=1578 мой код import Data.List (isInfixOf) removing :: String -> [String] ->...
E
10
Камрады, кто тесно работал с vtv, хотел уточнить. Ширина column задаётся жёстко на этапе создания дерева или можно в рантайме ее менять программно (не мышкой)?
Ed Doc
10
да ладно ... что там неочевидного ? глянуть в исх-ки датасета и/или кверика чтобы понять в каком месте и как выполняется обращения к св-вам blablaSQL - минутное дело, даже е...
Сергей
7
Здесь для arm кто-нибудь кодит ?
Nothing
52
Всем привет, у меня есть сервер принимающий входящие HTTP подключения, как проверить, что подключение было через прокси или нет, есть какие то поля в заголовках по которым мо...
Кибер Бомж
8
Карта сайта