Autor Zpráva
FesanCZ
Profil
Dobrý den, aktuálně řeším ukládání objektů do pole, potíž je v tom, že data se nepřidají, ale přepíšou. Nějaké nápady. Viz. kód

export function onClick(name: string, price: string) {
    let data = {'name': name, 'price': price};

    //newData
    sessionStorage.setItem('newData', JSON.stringify(data));
    let newData = JSON.parse(sessionStorage.getItem('newData'));

    //Cart
    let cartData = [];
    cartData.push(newData);
    sessionStorage.setItem('cart', JSON.stringify(cartData));
    let cart = JSON.parse(sessionStorage.getItem('cart'));

    console.log(cart); //todo LOG
}



FesanCZ:
Pozn. chci dosáhnout výsledku
  [
    0: {name:'test1',price:'150'}
    1: {name:'test2',price:'180'}
    2: {name:'test3',price:'190'}
    3: {name:'test4',price:'150'}
    4: {name:'test5',price:'180'}
    5: {name:'test6',price:'190'}
  ]
Radek9
Profil
FesanCZ:
Jsi si jistý, že chceš použít sessionStorage? Víš, jak funguje? Lepší by podle mě bylo localStorage. Každopádně by to mělo být takhle:
export function onClick(name: string, price: string) {
    let item = { name, price }
 
    // Cart
    let cartStr = localStorage.getItem('cart')
    let cartData = cartStr ? JSON.parse(cartStr) : []
    cartData.push(item)
    localStorage.setItem('cart', JSON.stringify(cartData))
}
FesanCZ
Profil
Radek9:
Vyřešil jsem to jiným způsobem. Neuvědomil jsem si, že data stále přepisuji. Tudíž jsem proměnou let cartData = [] dal mimo metodu
Radek9
Profil
FesanCZ:
To ti nebude fungovat. Zkus schválně reloadnout stránku a něco přidat do košíku. Zase se přemaže.
FesanCZ
Profil
Radek9:

I po reloadu stránky zůstavají data uložené. Viz. kompletní metoda

export let cartData: string[] = [];

export function onClick(name: string, price: string) {
    let data = {'name': name, 'price': price};

    //newData
    localStorage.setItem('newData', JSON.stringify(data));
    let newData = JSON.parse(localStorage.getItem('newData'));

    //Cart
    cartData.push(newData);

    localStorage.setItem('cart', JSON.stringify(cartData));
    let cart = JSON.parse(localStorage.getItem('cart'));



    console.log(cart); //todo LOG
}
Radek9
Profil
FesanCZ:
Nevěřím. :-) Schválně si to vyzkoušej: Živá ukázka
1) Přidej něco do košíku.
2) Reloadni stránku. (V košíku je všechno, jak má být.)
3) Přidej něco do košíku. (Jejda!)
FesanCZ
Profil
Radek9:
Ano máte pravdu, nevšiml jsem si toho. Každopádně Váš kód funguje. Děkuji za pomoc :)

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0