Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [angular] Lazy Loding danych z API
poczatkujaca12
post 6.11.2020, 17:36:23
Post #1





Grupa: Zarejestrowani
Postów: 107
Pomógł: 0
Dołączył: 24.06.2010
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Witam, mam aplikację z listą userów, listę dostaje z API
ale chciałabym aby wyświetliło mi pierwszych 10, kolejnych po kliknięciu ładuj więcej userów...
i ma dołdowywać po 5 userów do listy...

da się to zrobić jakoś sensownie?

w tej chwili mam już wszystkich userów, wyświetla mi tak jak chciałam, sortuje, ale nie mogę sobie poradzić z LayLoadingiem
Go to the top of the page
+Quote Post
trueblue
post 6.11.2020, 17:57:22
Post #2





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


To jest kwestia tego czy API umożliwia stronicowanie wyników.


--------------------
Go to the top of the page
+Quote Post
poczatkujaca12
post 6.11.2020, 18:35:10
Post #3





Grupa: Zarejestrowani
Postów: 107
Pomógł: 0
Dołączył: 24.06.2010
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Api jest zwykłe, bezstanowe, zwraca listę w jsonie

Ten post edytował poczatkujaca12 6.11.2020, 18:42:34
Go to the top of the page
+Quote Post
gitbejbe
post 6.11.2020, 20:07:20
Post #4





Grupa: Zarejestrowani
Postów: 515
Pomógł: 63
Dołączył: 27.08.2012

Ostrzeżenie: (0%)
-----


jeśli masz listę wszystkich userów to o co Ci chodzi z tym lazyloading ? Nie wiesz jak stworzyć komponent do wyświetlania tych użytkowników ?
Go to the top of the page
+Quote Post
poczatkujaca12
post 7.11.2020, 10:04:38
Post #5





Grupa: Zarejestrowani
Postów: 107
Pomógł: 0
Dołączył: 24.06.2010
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


mam listę wszystkich userów,
wyswietlam z jsona...
i teraz muszę jakoś dołączyć lazyloading... aby wyświelić na raz 10 userów, a później po kliknięciu doładować kolejnych...
to że w jsonie pobierze mi wszystkich to nie jest problem
Go to the top of the page
+Quote Post
SmokAnalog
post 7.11.2020, 11:45:53
Post #6





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Poczytaj: https://jasonwatmore.com/post/2019/06/18/an...ination-example
Go to the top of the page
+Quote Post
poczatkujaca12
post 7.11.2020, 11:51:42
Post #7





Grupa: Zarejestrowani
Postów: 107
Pomógł: 0
Dołączył: 24.06.2010
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


tylko to ma dodawać wyniki, a nie stronnicować sad.gif
Go to the top of the page
+Quote Post
SmokAnalog
post 7.11.2020, 12:55:15
Post #8





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Nie rozumiem. Co masz na myśli przez "dawać wyniki"? Co z nimi robisz?
Go to the top of the page
+Quote Post
dublinka
post 7.11.2020, 14:18:15
Post #9





Grupa: Zarejestrowani
Postów: 594
Pomógł: 66
Dołączył: 22.02.2008
Skąd: Dublin

Ostrzeżenie: (0%)
-----


Cytat(SmokAnalog @ 7.11.2020, 11:55:15 ) *
Nie rozumiem. Co masz na myśli przez "dawać wyniki"? Co z nimi robisz?

Gosc chce wczytywanie danych partiami. Tak jak to jest na niektorych sajtach ze na samym dole jest przycisk "pokaz wiecej" i wczyytuja sie dane ale nie wszystkie tyko jakas wlasnie część. Tu chce pewnie wczytywac jak napisal po 10 userow czy costam. Dopuki sa dane bedzie mozliwos i wyswietlania partiami.
Ja to tak rozumiem


--------------------
Go to the top of the page
+Quote Post
SmokAnalog
post 7.11.2020, 14:39:16
Post #10





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

Ostrzeżenie: (0%)
-----


To idea podobna jak przy paginacji, tylko że dodajesz kolejne wyniki. Skoro wszystko jest od razu wczytane, to wystarczy pobrać dane raz i potem je kolejno odkrywać. Sposobów implementacji tego jest mnóstwo.
Go to the top of the page
+Quote Post
poczatkujaca12
post 7.11.2020, 19:07:53
Post #11





Grupa: Zarejestrowani
Postów: 107
Pomógł: 0
Dołączył: 24.06.2010
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Cytat(dublinka @ 7.11.2020, 14:18:15 ) *
Gosc chce wczytywanie danych partiami. Tak jak to jest na niektorych sajtach ze na samym dole jest przycisk "pokaz wiecej" i wczyytuja sie dane ale nie wszystkie tyko jakas wlasnie część. Tu chce pewnie wczytywac jak napisal po 10 userow czy costam. Dopuki sa dane bedzie mozliwos i wyswietlania partiami.
Ja to tak rozumiem

Dokładnie...
idea podobna jak przy pagainacji, tylko jednak przy pagainacji nie spotkałam się z tym, aby nie ukrywało wcześniejszych wyników
Go to the top of the page
+Quote Post
SmokAnalog
post 7.11.2020, 20:09:56
Post #12





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Nie używam Angulara, ale zrobiłem dla Ciebie przykład w Vue.js, powinno być podobnie:

[JAVASCRIPT] pobierz, plaintext
  1. const app = new Vue({
  2. el: '#app',
  3. data: {
  4. albums: [],
  5. visibleAlbums: 10,
  6. albumBatch: 10
  7. },
  8. async created() {
  9. const url = 'https://jsonplaceholder.typicode.com/albums';
  10. const response = await fetch(url);
  11. this.albums = await response.json();
  12. },
  13. template: `
  14. <div>
  15. <div v-for="album in albums.slice(0, visibleAlbums)">{{ album.title }}</div>
  16. <button v-if="visibleAlbums < albums.length" @click="visibleAlbums += albumBatch">
  17. Pokaż więcej
  18. </button>
  19. </div>
  20. `
  21. });
[JAVASCRIPT] pobierz, plaintext
Go to the top of the page
+Quote Post
poczatkujaca12
post 7.11.2020, 21:46:45
Post #13





Grupa: Zarejestrowani
Postów: 107
Pomógł: 0
Dołączył: 24.06.2010
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Dzięki...zrobiłam tak:
user.component.ts:
  1. export class UserComponent implements OnInit {
  2. users = [];
  3. visibleUsers: 10;
  4. newUsers: 5;
  5. constructor(private dataService: DataService) { }
  6.  
  7. ngOnInit(): void {
  8. this.dataService.sendGetRequest().subscribe((data: any[])=>{
  9. data.sort((a,b) => b.registerDate- a.registerDate);
  10. this.user = data;
  11. })
  12. }

user.component.html
  1. <div class="users" *ngFor="let user of users.slice(0, visibleUsers)">
  2. <h3>{{user.name}}</h3>
  3. </div>

data.service.ts
  1. export class DataService {
  2.  
  3. private API_SERVER = "https://link/api/users";
  4.  
  5. constructor(private httpClient: HttpClient) { }
  6.  
  7. public sendGetRequest(){
  8. return this.httpClient.get(this.API_SERVER);
  9. }
  10. }

Ale nadal wyświetla mi wszystkich userów...

Ten post edytował poczatkujaca12 7.11.2020, 21:47:11
Go to the top of the page
+Quote Post
SmokAnalog
post 7.11.2020, 21:52:09
Post #14





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Pogooglałem chwilę i nie powinno być tak?

  1. <div class="users" *ngFor="let user of users | slice:0:visibleUsers">


Ten post edytował SmokAnalog 7.11.2020, 21:52:44
Go to the top of the page
+Quote Post
poczatkujaca12
post 7.11.2020, 23:07:02
Post #15





Grupa: Zarejestrowani
Postów: 107
Pomógł: 0
Dołączył: 24.06.2010
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Tak, dzięki biggrin.gif działa...

Ten post edytował poczatkujaca12 8.11.2020, 00:29:19
Go to the top of the page
+Quote Post
dublinka
post 8.11.2020, 01:14:26
Post #16





Grupa: Zarejestrowani
Postów: 594
Pomógł: 66
Dołączył: 22.02.2008
Skąd: Dublin

Ostrzeżenie: (0%)
-----


https://www.jqueryscript.net/tags.php?/load%20more/


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 27.04.2024 - 11:40