2016-04-25 16 views
1

Ich erstelle eine Shopping-Anwendung (Angular JS und Ionic). Immer wenn ich ein Element zum Warenkorb hinzufüge, wird das vorherige Element überschrieben. Unten ist mein Code:Werte, die im AngularJS-Array überschrieben werden

detail.html:

<ion-view view-title="DetailPage"> 
     <ion-content> 
      <h4> 
       Product Details 
      </h4> 
      <ion-view view-title="playlists"> 
       <ion-content> 
        <input type="button" ng-click="addToCart();" value="add cart" /> 
       </ion-content> 
      </ion-view> 

Controller.js:

.controller('detailsCtrl', function($scope, $stateParams) { 

     var productname = $stateParams.playlistname; 
     var arr = []; 
     $scope.addToCart = function() { 
      arr.push(productname); 
      localStorage.setItem('arr', arr); 


     }) 

Wie gehe ich das Überschreiben von Elementen?

Antwort

2

Sie initialisieren das Array jedes Mal neu und schreiben dann das neue Array in den lokalen Speicher. Sie müssen die vorhandenen Array aus dem lokalen Speicher abrufen und dann Elemente drücken Sie auf, um es:

.controller('detailsCtrl', function($scope, $stateParams) { 

     var productname = $stateParams.playlistname; 
     // Get the product array from local storage if it exists 
     // or initialise a new array. 
     var arr = localStorage.getItem('arr') || []; 
     $scope.addToCart = function() { 
      arr.push(productname); 
      localStorage.setItem('arr', arr); 


     }) 
+0

Dies ist die richtige Antwort. –

+0

Nein. Dieser Code löst einen Fehler aus, der besagt, dass arr.push keine Funktion ist. – Gunner

+0

Vielleicht haben Sie bereits ein Element namens 'arr' in localStorage, das kein Array ist. Löschen Sie entweder Ihre localStorage und versuchen Sie es erneut oder verwenden Sie einen anderen Variablennamen (wahrscheinlich ist eine gute Idee, da 'arr' sowieso nicht sehr beschreibend ist). –

Verwandte Themen