2016-04-25 52 views
1

我正在創建一個購物應用程序(Angular JS和Ionic)。每當我將物品添加到購物車時,它都會覆蓋前一個元素。下面是我的代碼:在AngularJS數組中覆蓋的值

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); 


     }) 

如何處理元素的覆蓋?

回答

2

您正在重新初始化陣列,然後將新陣列寫入本地存儲。您需要從本地存儲中檢索現有陣列,然後將元素推送到它:

.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

這是正確的答案。 –

+0

不。這個代碼會拋出一個錯誤,說arr.push不是一個函數。 – Gunner

+0

也許你已經在localStorage中有一個名爲'arr'的項目,它不是一個數組。要麼清除localStorage並重試或使用其他變量名稱(可能是個好主意,因爲'arr'不是非常具有描述性)。 –