Кто-нибудь знает, почему переменные области видимости не обновляются? Мне это поразило. Переменные sessionStorage являются точными, но когда я определяю их в переменных области. Я получаю ошибки "undefined". Я применил $scope. $Apply, но, видимо, область уже усваивается...: S, пожалуйста, помогите новичку.
if(sessionStorage.loggedIn){
$scope.user = sessionStorage.user;
$scope.user.gravatar = sessionStorage.gravatar;
console.log($scope.user.gravatar);
console.log('Session variable is active');
$scope.loggedIn = sessionStorage.loggedIn;
}
полный код:
app.controller('loginCtrl', ['$scope','$route','Auth','$modal','$timeout', function($scope,$route,Auth,$modal,$timeout){
if(sessionStorage.loggedIn){
$scope.user = sessionStorage.user;
$scope.user.gravatar = sessionStorage.gravatar;
console.log($scope.user.gravatar);
console.log('Session variable is active');
$scope.loggedIn = sessionStorage.loggedIn;
}
$scope.login = function(){
Auth.save({
'username': $scope.username,
'password': $scope.password
},function(data) {
$scope.loggedIn = true;
$scope.user = data.user;
$scope.user.gravatar = data.gravatar;
sessionStorage.loggedIn = $scope.loggedIn;
sessionStorage.user = data.user;
sessionStorage.gravatar = data.gravatar;
$route.reload();
},function(response){
$scope.flash = response.data.flash;
$scope.pop = true;
$timeout(function(){$scope.pop = false;}, 3000);
})
};
$scope.logout = function (){
Auth.get({},function(){
delete sessionStorage.user;
delete sessionStorage.gravatar;
delete sessionStorage.loggedIn;
$scope.loggedIn = false;
$timeout(function(){$route.reload();}, 1000);
})
};
}]);
Сводная информация о цепочке событий:
1) Пользователь регистрируется в
2) После успешного входа пользовательские данные (объект json) хранятся в sessionStorage.user = data.user
, а переменная data.user обычно содержит такую информацию {id: 1, username: "user123", firstname: "", lastname: "", email: "[email protected]"}
- пользовательский хэш файл также сохраняется в переменной sessionStorage.user.gravatar.
3) Если пользователь выходит из системы, переменные sessionStorage удаляются.
4) Однако, если пользователь все еще зарегистрирован, обновляет/перезагружает страницу (из браузера), переменная sessionStorage по-прежнему активна и все еще содержит данные, НО по какой-то причине, когда я устанавливаю переменные области, например. $scope.user = sessionStorage.user
- переменная scope остается undefined - несмотря на то, что sessionStorage.user является абсолютно жизнеспособным. Проблема, похоже, связана с областью.