在AngularJS app中本地保存数组数据以在两个应用程序之间共享

时间:2014-10-06 17:44:04

标签: javascript arrays angularjs local-storage angular-local-storage

我有一些数组数据var queries = [];我希望在两个AngularJS应用程序之间保持并共享。 2个应用程序,一个用于前端,另一个用于管理端。两端都会使整个页面在加载时加载。

我尝试使用以下代码共享数据,但它似乎不起作用:

.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数据在前端应用和管理端都可用。

有人可以帮我吗?

2 个答案:

答案 0 :(得分:1)

你应该试试这个:

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


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

让我知道这是否有效。

答案 1 :(得分: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');
            }
        };
    });