angularjs - Angular, strata údajov pri obnovení stránky
Mám malú otázku ohľadom Angular.
Mám tlačidlo v komponente, ktoré po stlačení vyberie hru a spustí funkciu a táto funkcia jednoducho odosiela hru do služby s názvom SelectedGameService, aby som vedel, ktorá hra bola vybraná. Tu sú moje kódy;
Tlačidlo v games.component.html;
<a class="btn btn-primary" (click)="handleDetails(game)" style="position: absolute; top:86%; background-color: #0909CD;" routerLink="/games/game-details/{{game.title}}">See The Game Details</a>
Ako som už povedal, funkcia handleDetails(game) odosiela hru tej funkcii. Táto funkcia handleDetails v súbore game.component.ts je;
handleDetails(game) {
this.selectedGameService.selectedGame = game;
}
Táto funkcia odosiela hru do selectedGameService. tu sú moje kódy v tejto službe;
import { Injectable } from '@angular/core';
import { Games } from '../games/Games';
import { Observable } from 'rxjs';
import { HttpClient } from '@angular/common/http';
@Injectable({
providedIn: 'root'
})
export class SelectedGameService {
selectedGame: Games;
constructor(private http: HttpClient) {
this.selectedGame = new Games;
}
Takže v podstate táto služba vytvorí novú hru a rovná ju hre, ktorá spustila funkciu handlePrice(game).
Tu je môj problém. Keď spustím kód, funguje to perfektne v prehliadači. Keď stlačím tlačidlo „Zobraziť podrobnosti hry“, môžem vidieť stránku tak, ako chcem, ale keď obnovím prehliadač, keď som na tej stránke, všetky informácie o hre zmiznú. Ako môžem tento problém vyriešiť?
Môžete vidieť obrázky pred a po tom, keď obnovím prehliadač, kým som na tej strane.
Ďakujem už teraz.
Pred obnovením stránky
Po obnovení stránky
Odpoveď č. 1
Dáta uložené vo variabiloch v službách budú vymazané, ak sa stránka obnoví. Jedným zo spôsobov, ako to vyriešiť, je použitie relácie alebo lokálneho úložiska na uloženie dát:
handleDetails(value) {
localStorage.setItem('key', value);
}
Na načítanie údajov z miestneho úložiska:
localStorage.getItem('key');
Odpoveď č. 2
Dáta, ktoré uložíte v službe, sa nachádzajú v pamäti. Keď obnovíte stránku, prehliadač uvoľní pamäť a dá vašej aplikácii čistý priestor na zápis.
Ak chcete udržať stav pri obnovovaní stránky, mali by ste použiť localStorage na uloženie vašich dát.
Proces, ktorý by ste mali nasledovať, je:
- Kedykoľvek zavoláte svoju službu na uloženie stavu, vaša služba by ho mala interne uložiť do localStorage.
- Keď obnovíte stránku, najprv by ste mali skontrolovať, či je už nejaký stav prítomný v localStorage alebo nie. Ak áno, mali by ste tieto údaje získať a naplniť nimi tabuľku, inak začnite od začiatku.
O lokalnom úložisku si môžete prečítať tu
