Как сохранить значения в $ localStorage как объект

0

Я хочу сохранить все объекты в $localStorage следующим образом:

$localStorage.userData.currentUser = data.name;
$localStorage.userData.devId= data.id;
$localStorage.userData.userRole = data.roles[0].name;
$localStorage.userData.userId = data.user_id;

контроллер Код:

myApp.controller('loginController', ['$rootScope', '$scope', 'Auth', '$state', '$localStorage',
    function ($rootScope, $scope, Auth, $state, $localStorage) {

        function successAuth(res) {
            $localStorage.token = res;
            $scope.currentUser = $localStorage.token.name;
            console.log("res: ", res);

            Auth.setUserData(res, function(){
                $scope.error = 'No User data available';
            });


            if ($localStorage.token) {
                $state.go("dashboard");
                $scope.isLogin = true;
            } else {
                alert("Invalid username or password");
            }
        }

        $scope.signin = function () {
            var formData = {device_id: myip, platform: "WEB", provider: "EMAIL", uid: $scope.login.username, access_token: "", password: $scope.login.password};
            Auth.signin(formData, successAuth, function () {
                $rootScope.error = 'Invalid credentials';
                console.log($rootScope.error);
            });
        };

        $scope.isLogin = !angular.isUndefined($localStorage.token);
    }]);

Я пробовал следующее в соответствии с документами, но не работал. Это дает ошибку, говоря "$ storage" неопределенного

$scope.$storage = $localStorage;

$storage.userData.currentUser = data.name;
$storage.userData.devId= data.id;
$storage.userData.userRole = data.roles[0].name;
$storage.userData.userId = data.user_id;

Как сохранить все данные в $localStorage как указано выше?

  • 0
    $ storage - это служба Angular, а не переменная области видимости. вы можете показать код контроллера?
  • 0
    Где вы заполняете $ хранилище? Это не ясно в коде.
Теги:

3 ответа

2

Вы можете попробовать что-то вроде

var newData = {
    currentUser : data.name,
    devId : data.id,
    userRole : data.roles[0].name,
    userId : data.user_id
 };

 localStorage.setItem( 'data' , JSON.stringify(newData) );

Can Parse//Для каждого элемента в локальном хранилище...

 for( item in localStorage ) {

        // Parse the JSON string and add to to array
        var newItem = JSON.parse( localStorage[item] );
        $scope.data.push( newItem );

    }

Получить данные по его ключу

localStorage.getItem( 'data' );
  • 0
    Я пробовал что-то похожее на этот localStorage.setItem( 'data' , JSON.stringify(newData) ); и он говорит, что `$ localStorage.setItem () 'не является функцией
  • 0
    Это потому, что $ localStorage не в контексте angularjs. Вы пробовали localStorage.setItem( 'data' , JSON.stringify(newData) просто я думаю, что это должно работать.
0

В loginController введите $window вместо $localStorage и используйте $window.localStorage.getItem(...) или даже $window.localStorage["storage_name"].
Чтобы хранить/устанавливать данные в localStorage, вы можете сделать $window.localStorage['storage_name'] = angular.toJson( object_to_store);

0

вот мой код, попробуйте этот:

 localStorage.setItem('user', JSON.stringify({
   name: "xyz",
   age: 25,
   comp: "abc"
 }));
 user = JSON.parse(localStorage.getItem('user'));
 console.log(localStorage)
  • 0
    Он говорит, что $ localStorage.setItem () не является функцией

Ещё вопросы

Сообщество Overcoder
Наверх
Меню