2017-04-21 2 views
0

Ich versuche, Cookies hinzuzufügen. Es funktioniert gut, aber wenn ich die Seite aktualisiere und neue Cookies hinzufüge, verschwinden alte Cookies und cookies.length wird nicht aktualisiert. Es wird aktualisiert, nachdem ich die Seite aktualisiert habe. Hier ist mein CodeAlte Cookies verschwinden, wenn neue Cookies hinzugefügt werden angularjs

vm.cart = []; 
vm.add = function(tensp,gia,img){ 
        vm.cart.push({tensp:tensp,gia:gia,img:img,sl:1}) 
        $cookies.putObject('cart',vm.cart); 

     } 

Und Anzeige in HTML.

vm.cookies = $cookies.getObject('cart'); 
{{vm.cookies.length}} 

Wo ist mein Fehler. Bitte hilf mir . Hier ist meine PLNKR https://plnkr.co/edit/StURuPuEBr8ykIUPdvBV?p=preview

+1

Wenn Sie demselben Schlüssel 'cart' einen neuen Wert hinzufügen, wird der alte Wert überschrieben. Wenn Sie keinen anderen Schlüssel als 'cart' haben, sollte die Cookie-Länge immer 1 sein. Das ist meine Schätzung basierend auf Ihrem Snippet. Wenn Sie eine einfache Arbeitsdemo erstellen können, um das Problem zu demonstrieren, werde ich einen Blick darauf werfen. – Hoa

+0

https://plnkr.co/edit/StURuPuEBr8ykIUPdvBV?p=preview hier ist plnkr ich erstellen. Ich denke du hast recht mit meinem Problem. Wie kann ich dem gleichen Schlüssel einen neuen Wert hinzufügen und ihn nicht überschreiben? Sie können mein Problem sehen, wenn Sie auf die Schaltfläche Hinzufügen klicken, und drücken Sie die Leertaste (PLNKR Reload) –

Antwort

1

Immer wenn Sie die Seite aktualisieren. vm.cart wird auf [] gesetzt. Und wenn Sie auf "Hinzufügen" klicken, wird ein Element zu vm.cart hinzugefügt. vm.cart enthält jetzt ein Element. Wenn vm.cart in Cookies gesetzt wird, werden alle vorhandenen Elemente in Cookies überschrieben.

Wenn Sie alle Artikel in Cookies behalten möchten, setzen Sie Elemente direkt auf Cookies und itemsdirectly Cookies abrufen als

var item = { 
    id: id, 
    masp: masp, 
    tensp: tensp 
}; 

var cart = $cookies.getObject('cart'); 

if (cart) { 
    var items = JSON.parse(cart); 
    items.push(item); 

    $cookies.putObject('cart', JSON.stringify(items)); 
} else { 
    $cookies.putObject('cart', JSON.stringify([ item ])); 
} 

folgt hier ein demo.

+0

Perfect. Ich danke dir sehr ! –