2016-06-19 9 views
1

こんにちはみんなは、私は私のサービスに$ウィンドウを注入し、私は私がの私達を作る他の工場を持って工場出荷時のコールの$のlocalStorage角度のlocalStorage

.factory('$localStorage', ['$window', function($window) { 
     return { 
      store: function(key, value) { 
      $window.localStorage[key] = value; 
      }, 
      get: function(key, defaultValue) { 
      return $window.localStorage[key] || defaultValue; 
      }, 
      storeObject: function(key, value) { 
      $window.localStorage[key] = JSON.stringify(value); 
      }, 
      getObject: function(key,defaultValue) { 
      return JSON.parse($window.localStorage[key] ||  defaultValue); 
      } 
     } 
     }]) 

を作成しました問題は、代わりに配列に新しいものを追加することで、私はお気に入りのアイテムを追加するとき、それは私の配列自体を置き換え

012で、いくつかのお気に入り

factory("favoriteFactory", ["$resource", "baseURL", "$localStorage", function($resource, baseURL, $localStorage) { 
     var favFac = {}; 
     var favorites = $localStorage.getObject("favorites", "[]"); 

     favFac.addToFavorites = function(index) { 
      for (var i = 0; i < favorites.length; i++) { 
       if (favorites[i].id == index) 
        return; 
      } 

      $localStorage.storeObject("favorites", {id: index}); 
      //favorites.push({id: index}); 
     }; 

     favFac.deleteFromFavorites = function (index) { 
      for (var i = 0; i < favorites.length; i++) { 
       if (favorites[i].id == index) { 
        favorites.splice(i, 1); 
       } 
      } 
     } 

     favFac.getFavorites = function() { 
      return favorites; 
     }; 

     return favFac; 
    }]) 

を節約するためにのlocalStorage工場私は本当に助けを寄付します

答えて

2

あなたは間違っています。配列を1つの項目に置き換えます。もう一つ注目すべきことは、Array.prototype.push()はコレクションの長さを返します。

enter code herefavFac.addToFavorites = function(index) { 
     for (var i = 0; i < favorites.length; i++) { 
      if (favorites[i].id == index) 
       return; 
     } 
     favorites.push({id: index}) 
     $localStorage.storeObject("favorites", favorites); 
     //favorites.push({id: index}); 
    }; 
+0

ありがとうございました。私のエラーを見ました –

+0

Array.prototype.push()はアイテムを返しません。それは長さを返す –

+0

@mJunaidSalaat Junaidさん、ありがとう、私は実際に配列 '[1,2,3]'で '4'を押しようとしましたが、それは私に4を返しました。修正をありがとう。否定投票には悪い:P –

1

あなたは今、それがローカルストレージにあなたの配列を保存最初にアイテムを追加します

favFac.addToFavorites = function(index) { 
      for (var i = 0; i < favorites.length; i++) { 
       if (favorites[i].id == index) 
        return; 
      } 

      favorites.push({id: index}); 
      $localStorage.storeObject("favorites", favorites); 

     }; 

ようaddToFavorites方法を変更する必要があります。私はあなたが単一のコマンドとして最も簡単なようのlocalStorageから項目を追加または削除することができますどのngStorageを使用することをお勧めアドバイスとして

+0

ありがとう –

0

$localStorage.favorites = []; 

それだと今はのlocalStorageと任意の時間でのお気に入りのリストを持っていますこの配列を変更すると、localStorageで直接結果が得られます。

$localStorage.favorites.push(newItemToAdd); // this adds a item. 
$localStorage.favorites = $localStorage.favorites 
    .filter((v, i) => i !== indexOfItemToDelete); // removes item.