2016-04-08 9 views
0

Wenn Element vorhanden sind, fügen Sie eine Menge hinzu, sonst fügen Sie einfach das Objekt in das Array. Aber mit dieser einfachen Logik konnte ich keinen funktionierenden Code erstellen. Der obige Code ist kaputt.kämpfen mit in den Warenkorb lokale Speicherlogik

+1

'oben Code broken' Wie das? Was macht es? –

+0

Was speziell ist defekt? –

+1

Ich denke, deine Logik ist hier von vorne nach 'toSaveArray.push (fromSaved);' Von dem, was ich sehen kann, wäre es viel sinnvoller, das 'toSaveObj' in den bestehenden Speicher (' fromSaved') zu schieben und dann erneut zu speichern . – DBS

Antwort

2

ich einige Logik Fehler lösen:

$scope.toCart = function(id, item) { 
    var cart = JSON.parse(localStorage.getItem('cart')); 
    if (!cart) { 
     cart = []; 
    } 

    var index = cart.findIndex(function (cartItem) { 
     return cartItem.id === item._id; 
    }); 

    if (index !== -1) { 
     cart[index].qty += 1; 
    } else { 
     cart.push({ 
      id: item._id, 
      name : item.name, 
      image : item.image[0], 
      price : item.price, 
      discount_price : item.discount_price, 
      qty : 1 
     }); 
    } 

    localStorage.setItem('cart',JSON.stringify(cart)); 

} 
+1

wird es einen Fehler geben, wenn der Wagen zum ersten Mal leer ist? –

+0

@ cody-jonas lösen es, danke –

+0

das ist eigentlich eine wirklich schlaue Lösung! –

0

Ihr Code wurde falsch machen bei diesen Schritten:

  • vorherigen item._id mit dem Parameter Vergleich id
  • immer Speichern der item Parameter
  • Doing ein unecessary für

    $scope.toCart = function(item){ 
    
        var toSaveArray = []; 
        var toSaveObj = { 
         id: item._id, 
         name : item.name, 
         image : item.image[0], 
         price : item.price, 
         discount_price : item.discount_price, 
         qty : 1 
        }; 
    
        var fromSaved = JSON.parse(localStorage.getItem('cart')); 
    
        if(fromSaved){ 
         var savedItem = $filter('filter')(fromSaved, {id: item._id}); 
         if (savedItem) { 
          fromSaved[fromSaved.indexOf(savedItem[0])].qty++; 
         } 
    
         toSaveArray = fromSaved; 
        } else { 
         toSaveArray.push(toSaveObj); 
        } 
    
        localStorage.setItem('cart',JSON.stringify(toSaveArray)); 
    }; 
    

Der obige Code sollte für alles abdecken.

Verwandte Themen