1

我只需要在localStorage中存儲數組並繼續向該數組添加元素,以便我可以在應用程序中檢索該存儲數組。這對Angular Local Storage Module來說肯定是一件非常簡單的事情,但它讓我很煩惱,我希望能夠得到一些幫助。使用角度本地存儲模塊在本地存儲陣列中存儲元素

以下是角碼我有我使用的存儲querieslocalStorage使用angular-local-storage模塊:

.factory('QueryService', ['localStorageService', function(localStorageService) { 
     var queries = []; 
     var factory = {}; 

     factory.addQuery = function(query) { 
      queries.push(query); 

      localStorageService.set('queries', queries); 
      return localStorageService.get("queries"); 
     }; 
     return factory; 
    }]) 

我每次查詢添加到queries陣列,我只得到了最後一個元素添加返回結果。所以基本上,localStorageService.get("queries")給我加入queries陣列的最後一個元素。

難道有人請幫助我明白,爲什麼我只得到我添加到queries數組返回的最後一個元素?

編輯: 我加入到queries陣列我刷新瀏覽器的每個元素之後。

+1

是否_AngularJS_ localStorage的模塊自動'stringify'和'parse'你的陣列爲您服務。我的理解是,localStorage目前僅支持字符串。因此需要轉換(通常使用'JSON.stringify'和'JSON.parse')。我在之前的[答案](http://AngularJS_之外)中寫了這個(http://stackoverflow.com/questions/16083919/push-json-objects-to-array-in-localstorage/16084772#16084772)。不知道預構建模塊是否適用於您... – War10ck 2014-10-09 17:31:15

+1

關於您的編輯,您是否在將內容存儲在localStorage之前或之後刷新瀏覽器? – War10ck 2014-10-09 17:32:02

+0

@SnareChops&@ War10ck:在添加新元素到'queries'數組之間刷新瀏覽器是否可以清理'queries'數組? – skip 2014-10-09 17:33:41

回答

3

通常情況下,您不能直接使用localStorage存儲數組。但角度本地存儲爲您在這條線上看到這個工作:https://github.com/grevory/angular-local-storage/blob/ed422c04764d4981a48f4c40859d65087b1b9838/src/angular-local-storage.js#L119

回答你的問題的線索是,你添加一個元素後刷新你的瀏覽器,所以查詢數組確實得到清理。瀏覽器刷新實際上會抹去所有的JavaScript值,甚至整個AngularJS應用程序都會重新啓動。

爲了讓你的代碼工作,你必須初始化控制器的第一行查詢數組:

.factory('QueryService', ['localStorageService', function(localStorageService) { 
     var queries = localStorageService.get('queries') || []; 
     var factory = {}; 

     factory.addQuery = function(query) { 
      queries.push(query); 

      localStorageService.set('queries', queries); 
      return localStorageService.get("queries"); 
     }; 
     return factory; 
    }])