AngularJS - Получить localStorage в модуле - PullRequest
0 голосов
/ 01 мая 2019

После входа в систему я сохраняю пользовательские данные в localStorage и перенаправляю их на панель инструментов. LoginCtrl:

    (function() {
    'use strict';

    angular.module('BlurAdmin.pages.login')
        .controller('LoginCtrl', LoginCtrl);

    /** @ngInject */
    function LoginCtrl($scope, $timeout, $http, $location, toastr) {

        $scope.login = function() {

            var data = { email: $scope.email, senha: $scope.password }

            $http.post('http://xxxxxxx/snaapp/admin/login', data).
            then(function(response) {
                localStorage.token = response.data.token;
                $http.get('http://xxxxxxx/snaapp/auth/user/info', { headers: { 'Authorization': response.data.token } }).
                then(function(response) {

                    //Set values in localStorage

                    localStorage.user = JSON.stringify(response.data);
                    $location.path("/dashboard");
                }).catch(function(fallback) {
                    toastr.error('Erro ao fazer login');
                });

            }).catch(function(fallback) {
                toastr.error('Erro ao fazer login');
            });
        };

    }
})(); 

Как получить данные из localStorage в определенном модуле?

    (function() {
    'use strict';

    angular.module('BlurAdmin.pages.juridico', [
            'BlurAdmin.pages.juridico.acoesColetivas'
        ])
        .config(routeConfig);

    /** @ngInject */
    function routeConfig($stateProvider) {

        //I need to do something like this:
        console.log(localStorage.user)

        $stateProvider
            .state('juridico', {
                url: '/juridico',
                template: '<ui-view  autoscroll="true" autoscroll-body-top></ui-view>',
                abstract: true,
                title: 'Jurídico',
                sidebarMeta: {
                    icon: 'ion-gear-a',
                    order: 100,
                },
            });
    }

})();

Приведенный выше код работает, только если я перезагружаю страницу, но это не может произойти, после ее перенаправления мне нужно получить эти данные в модуле

Ответы [ 2 ]

0 голосов
/ 01 мая 2019

Вам необходимо ввести $window в свой контроллер, и вы можете использовать $window.localStorage.

Чтобы проверить это, вы можете следовать Chrome -> F12 -> Приложение -> Хранилище -> Локальное хранилище

(function() {
  'use strict';

  angular.module('BlurAdmin.pages.login')
    .controller('LoginCtrl', LoginCtrl);

  /** @ngInject */
  function LoginCtrl($scope, $timeout, $http, $location, toastr, $window) {

    $scope.login = function() {

      var data = {
        email: $scope.email,
        senha: $scope.password
      }

      $http.post('http://xxxxxxx/snaapp/admin/login', data).
      then(function(response) {
        $window.localStorage.token = response.data.token;
        $http.get('http://xxxxxxx/snaapp/auth/user/info', {
          headers: {
            'Authorization': response.data.token
          }
        }).
        then(function(response) {

          //Set values in localStorage

          $window.localStorage.user = JSON.stringify(response.data);
          $location.path("/dashboard");
        }).catch(function(fallback) {
          toastr.error('Erro ao fazer login');
        });

      }).catch(function(fallback) {
        toastr.error('Erro ao fazer login');
      });
    };

  }
})();
0 голосов
/ 01 мая 2019

Хранить в местном хранилище

let userData = JSON.stringify(response.data);
localStorage.setItem("user", userData);

Извлечь из местного хранилища

let savedUser = localStorage.getItem("user");

Ссылка: ссылка

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...