0

我想要在两个AngularJS应用程序之间保持和共享一些阵列数据var queries = [];。 2个应用程序,其中一个用于前端,另一个用于管理端。加载时,两端都会加载整个页面。在两个应用程序之间共享AngularJS应用程序中的本地阵列数据

我尝试使用下面的代码共享数据,但它似乎并没有工作:

.factory('QueryService', function() { 
     var queries = []; 
     var factory = {}; 
     //.. 
    factory.addQuery = function(query) { 
      queries.push(query); 
     localStorage.setItem('queries', JSON.stringify(queries)); 
     console.log(JSON.parse(localStorage.getItem('queries'))); 
     return JSON.parse(localStorage.getItem('queries')); 
    }; 
    //.. 
    return factory; 
} 

我只得到了最后一个元素添加到queries阵列与上面的代码。

我也试过以下使用angular-local-storage但我仍然得到相同的结果。

.factory('QueryService', ['localStorageService', function(localStorageService) { 
     var queries = []; 
     var factory = {}; 
     //.. 
    factory.addQuery = function(query) { 
      queries.push(query); 
     localStorageService.set('queries', queries); 
     console.log(localStorageService.get(('queries'))); 
     return localStorageService.get(('queries')); 
    }; 
    //.. 
    return factory; 
} 

我所需要的阵列queries数据在前端的应用程序和也在管理端可用。

有人可以帮我吗?

回答

1

使用工厂来设置特定工厂的专用变量,然后您可以设置并获取该专用变量的值。

如果需要,您可以创建另一个方法来清除查询变量。

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

     return { 
      addQuery : function (query) { 
       queries.push(query); 
       localStorage.setItem('queries', JSON.stringify(queries)); 
       console.log(JSON.parse(localStorage.getItem('queries'))); 
       return JSON.parse(localStorage.getItem('queries')); 
      }, 
      fetchQuery : function () { 
       return localStorage.getItem('queries'); 
      } 
     }; 
    }); 
+0

当管理端被加载,导致整个页面被加载,'查询'数组不会丢失所有的数据?我们不需要'localStorage'来在本地保存它吗? – skip 2014-10-06 18:13:05

+0

如果你正在谈论两个应用程序,你将需要某种类型的中间件来协助应用程序之间的通信(如websockets等) - localStorage IMO是在两个应用程序之间保持数据的脆弱方式。 – 2014-10-06 19:08:47

+0

我误解了原文 - 因为我假定前/后端都加载了同一个工厂。 – 2014-10-06 19:09:14

1

你应该试试这个:

// save to localStorage 
localStorage.myData = angular.toJson(data); 


// retrieve from localStorage 
var data = angular.fromJson(localStorage.myData); 

让我知道这是否正常工作。

+0

这也行不通。 – skip 2014-10-06 17:59:51

+0

您是否尝试过'console.log'的值,它说什么? – developer10 2014-10-06 18:00:41

+0

是的,我使用'console.log(angular.fromJson(localStorage.queries));'得到了从'localStorage'检索到的'queries'数组,这两个时间只显示了添加到'queries'数组的最后一个元素。 – skip 2014-10-06 18:03:56

相关问题