Wer weiß, warum meine Scope-Variablen nicht aktualisiert werden? Es ist verrückt nach mir. Die sessionStorage-Variablen sind in Ordnung, aber wenn ich sie innerhalb der Scope-Variablen definiere, bekomme ich 'undefined' Fehler. Ich habe mit $ scope. $ Apply gebastelt, aber anscheinend wird der Umfang bereits verdaut ...: S bitte helfen Sie einem Neuling heraus.Angularjs sessionSpeicher und Bereich
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;
}
der vollständige Code:
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);
})
};
}]);
Zusammenfassung der Kette von Ereignissen:
1) Benutzer anmeldet
2) Nach der erfolgreichen Anmeldung des Benutzers Details (JSON-Objekt) sind in sessionStorage.user = data.user
gespeichert und die Variable data.user enthält typischerweise diese Art von Informationen {id: 1, username: "user123", firstname: "", lastname: "", email: "[email protected]"}
-der Gravatar Hash des Benutzers ist auch st in einer sessionStorage.user.gravatar-Variable gespeichert.
3) Wenn sich der Benutzer abmeldet, werden sessionStorage-Variablen gelöscht.
4) Wenn jedoch Benutzer noch angemeldet ist, frischt/die Seite neu geladen (von Browser), die session Variable ist immer noch aktiv, und enthält noch die Daten, ABER aus irgendeinem Grund, wenn ich Umfang Variablen z.B. $scope.user = sessionStorage.user
- Die Scope-Variable bleibt undefiniert - obwohl sessionStorage.user vollkommen brauchbar ist. Das Problem scheint mit dem Umfang zu sein.
Sind Sie sicher, dass der sessionStorage.user ein Objekt ist? – JimmyRare
können Sie die Kette von Ereignissen angeben, die Sie aufrufen und was das erwartete Verhalten sein sollte – adrichman
können Sie dies in eine jfiddle, jsbin oder Plunker bekommen? auch wichtig sein kann, welchen Browser Sie verwenden – Maslow