如何在本地存储并从AngularJS中的动态JSON响应中检索值?

时间:2016-05-18 08:32:17

标签: angularjs json

我是AngularJS的新手。

当用户使用email-id登录时,我将从后端获取json响应,如下所示,动态session-id为12位

JSON响应

{
      "json": {
        "response": {
          "statuscode": "0",
          "statusmessage": "Success",
          "user": [
            {
              "sessionid": "56756",
              "groupdetails": {
                "group-id": 216,
                "group-code": "ABC",
                "group-name": "School BSK"
              },
              "memberdetails": {
                "member-id": 22,
                "member-name": "Arya"
              }
            },
            {
              "sessionid": "123456789012",
              "groupdetails": {
                "group-id": 215,
                "group-code": "XYZ",
                "group-code": "College ABC"
              },
              "memberdetails": {
                "member-id": 223,
                "member-name": "Arya1"
              }
            }
          ]
        }
      }
    }

我需要从响应中获取值,并使用不同的变量名分别存储每个会话ID。但问题是用户可以拥有任意数量的帐户。每个帐户都有不同的会话ID。

我不知道如何动态获取值并分别存储所有会话ID并进一步使用。

我使用以下代码从后端获得的响应。

Login.controller.js

(function () {
    'use strict';

    var app = angular
        .module('app');


    app.controller('LoginController', LoginController);

    LoginController.$inject = ['$location', 'AuthenticationService', 'FlashService'];
    function LoginController($location, AuthenticationService, FlashService) {
        var vm = this;

        vm.login = login;

        (function initController() {
            // reset login status
            AuthenticationService.ClearCredentials();
        })();


        function login() {
            vm.dataLoading = true;

            if (vm.username.indexOf('@') != -1) {
        AuthenticationService.Login(vm.username, vm.password, function(response) {
            if (response.json.response.statuscode == 0 && response.json.response.statusmessage=='Success') {
                AuthenticationService.SetCredentials(vm.username, vm.password);
                $location.path('/');
                console.log(response);
                if (typeof (Storage) !== "undefined") {

                    var userdata = response;

                    localStorage.setItem('userdata', userdata);

                    }
                    else {
                        alert("Sorry, your browser does not support web storage...");
                    }
                } else {
                        FlashService.Error(response.json.response.statusmessage);
                        vm.dataLoading = false;
                    }
                });
                } else {
                    AuthenticationService.adminLogin(vm.username, vm.password, function(response) {
                        if (response.json.response.statuscode == 0) {
                            AuthenticationService.SetCredentials(vm.username, vm.password);
                            $location.path('/admin');
                            console.log(response);
                        } else {
                            FlashService.Error(response.json.response.statusmessage);
                            vm.dataLoading = false;
                        }
                    });
                }
            }
    }

  }) ();

我的回复位于AuthenticationService.Login(vm.username, vm.password, function(response)

1 个答案:

答案 0 :(得分:1)

为您的变量实现本地临时存储的最简单方法是对$ http请求使用缓存:

$http({
cache: true,
 url:url}).then(function(rs){});

Angular的本机缓存工作正常,但无法存储在本地sqlite数据库中,因为您需要一个库:

http://jmdobry.github.io/angular-cache/