Qualcuno sa perché le variabili dell'oscilloscopio non vengono aggiornate? È sconvolgente per me. Le variabili sessionStorage vanno bene, ma quando le definisco all'interno delle variabili scope ho degli errori "indefiniti". Ho armeggiato con $ scope. $ Apply, ma a quanto pare lo scope è già stato digerito ...: S per favore aiuta un novizio.sessione Angularjstoret e ambito
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;
}
il codice completo:
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);
})
};
}]);
Sintesi di catena di eventi: tronchi
1) utente nella
2) Dopo l'accesso, i dettagli dell'utente (oggetto JSON) sono memorizzati in sessionStorage.user = data.user
e la variabile data.user in genere contiene questo tipo di informazioni {id: 1, username: "user123", firstname: "", lastname: "", email: "[email protected]"}
-l'hash gravatar dell'utente è anche st ored in una variabile sessionStorage.user.gravatar.
3) Se l'utente si disconnette, le variabili sessionStorage vengono eliminate.
4) Tuttavia, se l'utente è ancora effettuato l'accesso, aggiorna/ricarica la pagina (dal browser), la variabile sessionStorage è ancora attivo, e contiene ancora i dati, MA per qualche ragione, quando ho impostato le variabili di scope per esempio. $scope.user = sessionStorage.user
- la variabile scope rimane indefinita - nonostante sessionStorage.user sia perfettamente funzionante. Il problema sembra essere con lo scopo.
Sei sicuro che sessionStorage.user è un oggetto? – JimmyRare
puoi specificare la catena di eventi che stai invocando e quale dovrebbe essere il comportamento che ti aspetti – adrichman
puoi farlo in jsfiddle, jsbin o plunker? importante anche il browser utilizzato: – Maslow