Angularjs 세션스토리지 및 범위
왜 내 범위 변수가 업데이트되지 않는지 아는 사람?정말 놀랍다.sessionStorage 변수는 정상이지만 범위 변수 내에서 정의하면..'정의되지 않은' 오류가 나타납니다.나는 $scope로 돈을 벌었다.$140, 하지만 스코프는 이미 소화되고 있는 것 같습니다.: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: "username@gmail.com"}
사용자의 그라바타 해시는 sessionStorage.user.gravatar 변수에도 저장됩니다.
3) 사용자가 로그아웃하면 sessionStorage 변수가 삭제됩니다.
4) 단, 사용자가 아직 로그인하고 있는 경우 (브라우저에서) 페이지를 새로고침/새로고침하면 sessionStorage 변수는 여전히 활성화되며 범위 변수를 설정할 때 어떤 이유로든 데이터가 포함됩니다. $scope.user = sessionStorage.user
sessionStorage.user가 완벽하게 실행 가능하더라도 스코프 변수는 정의되지 않은 상태로 유지됩니다.스코프에 문제가 있는 것 같다.
사용자 개체는 문자열 값의 집합으로 구현되므로 sessionStorage에 저장하기 전에 JSON에 직렬화해야 합니다.
이런 거 해봐
sessionStorage.user = JSON.stringify($scope.user);
그리고 나서.
$scope.user = JSON.parse(sessionStorage.user);
현재 angularjs에는 JSON이 없습니다.stringify는 sessionStorage에서 $scope 값을 할당합니다.
$sessionStorage.user = $scope.user;
$sessionStorage 서비스에 대한 자세한 문서
AngularJS - $sessionStorage by Scriptwerx는 Angular에서 사용하는 서비스입니다.JS 어플리케이션
npm install --save-dev angular-swx-session-storage
언급URL : https://stackoverflow.com/questions/23312864/angularjs-sessionstorage-and-scope
'programing' 카테고리의 다른 글
.Net 데이터 구조:Array List, List, HashTable, Dictionary, Sorted List, Sorted Dictionary -- 속도, 메모리, 사용 시기 (0) | 2023.04.08 |
---|---|
".bat" 파일에서 명령줄 매개 변수를 확인하는 방법 (0) | 2023.04.08 |
Json을 사용하여 Web API에서 응답을 직렬화하지 못했습니다. (0) | 2023.03.29 |
JSON을 CSV 형식으로 변환하고 변수에 저장하는 방법 (0) | 2023.03.29 |
WooCommerce의 국가 코드에서 국가 이름을 가져오는 중 (0) | 2023.03.29 |