如何在 angularjs 中访问 $localStorage 中保存的数据
how to access saved data in $localStorage in angularjs
我正在开发 MEAN 应用程序,在用户成功登录后,我想将返回的用户数据保存在浏览器的 localStorage 中,以便我可以进一步使用它,我正在使用 ngStorage 模块。我可以在浏览器的本地存储中保存用户数据。这是我在 LoginController 中的代码:
function loginController($http, $location, $rootScope,$localStorage){
var vm = this;
vm.signIn = signIn;
function signIn() {
$http({
url: '/login',
method: 'post',
data: vm.login
}).then(function(respond) {
if(respond.data){
$localStorage.userData = respond.data;
var info = $localStorage.userData;
$rootScope.userInfo = info;
$location.path('/dashboard/'+respond.data._id);
}else{
$location.path('/');
}
不,当我在另一个控制器中访问 $rootScope 时,我可以获得存储在 $localStorage 中的值。即使在我的 chrome 浏览器中,我也可以通过检查看到数据存储在 $localStorage 中。 但是当我刷新页面时 我可以看到浏览器中的 localStorage 中仍有数据,但不在我的 $rootscope 中。我的 rootScope 在页面刷新后得到空数据,我非常感谢任何关于如何访问这些数据并存储在 rootScope 中的建议。
应用重新加载时从本地存储中检索用户数据
app.run(function($rootScope){
if(localStorage['userData'])
{
$rootScope.userData = JSON.parse(localStorage.getItem('userData'));
}
});
正如我所说,当您像任何 javascript 变量一样重新加载位置时,$rootScope
会被破坏。您的 localStorage 数据在整个应用程序的任何地方都可以访问,直到您销毁、删除或重置它。
function loginController($http, $location, $rootScope, $localStorage) {
var vm = this;
vm.signIn = signIn;
function signIn() {
$http({
url: '/login',
method: 'post',
data: vm.login
}).then(function(respond) {
if (respond.data) {
$localStorage.userData = respond.data;
var info = $localStorage.userData;
$rootScope.userInfo = info;
$location.path('/dashboard/' + respond.data._id);
} else {
$location.path('/');
}
function anyController($scope, $localStorage) {
console.log($localStorage.userData);
}
一个示例,如果您通过模块 运行 函数中的 $localStorage
访问数据时没有 userData,则重定向到主状态。
angular.module("yourAppName")
.run(function ($rootScope, $state,$localStorage) {
$rootScope.$on("$stateChangeStart", function(event, toState, toParams, fromState, fromParams){
if(toState.name == 'app') return;
if (!$localStorage.userData){
$state.transitionTo("app");
event.preventDefault();
return;
}
});
});
我正在开发 MEAN 应用程序,在用户成功登录后,我想将返回的用户数据保存在浏览器的 localStorage 中,以便我可以进一步使用它,我正在使用 ngStorage 模块。我可以在浏览器的本地存储中保存用户数据。这是我在 LoginController 中的代码:
function loginController($http, $location, $rootScope,$localStorage){
var vm = this;
vm.signIn = signIn;
function signIn() {
$http({
url: '/login',
method: 'post',
data: vm.login
}).then(function(respond) {
if(respond.data){
$localStorage.userData = respond.data;
var info = $localStorage.userData;
$rootScope.userInfo = info;
$location.path('/dashboard/'+respond.data._id);
}else{
$location.path('/');
}
不,当我在另一个控制器中访问 $rootScope 时,我可以获得存储在 $localStorage 中的值。即使在我的 chrome 浏览器中,我也可以通过检查看到数据存储在 $localStorage 中。 但是当我刷新页面时 我可以看到浏览器中的 localStorage 中仍有数据,但不在我的 $rootscope 中。我的 rootScope 在页面刷新后得到空数据,我非常感谢任何关于如何访问这些数据并存储在 rootScope 中的建议。
应用重新加载时从本地存储中检索用户数据
app.run(function($rootScope){
if(localStorage['userData'])
{
$rootScope.userData = JSON.parse(localStorage.getItem('userData'));
}
});
正如我所说,当您像任何 javascript 变量一样重新加载位置时,$rootScope
会被破坏。您的 localStorage 数据在整个应用程序的任何地方都可以访问,直到您销毁、删除或重置它。
function loginController($http, $location, $rootScope, $localStorage) {
var vm = this;
vm.signIn = signIn;
function signIn() {
$http({
url: '/login',
method: 'post',
data: vm.login
}).then(function(respond) {
if (respond.data) {
$localStorage.userData = respond.data;
var info = $localStorage.userData;
$rootScope.userInfo = info;
$location.path('/dashboard/' + respond.data._id);
} else {
$location.path('/');
}
function anyController($scope, $localStorage) {
console.log($localStorage.userData);
}
一个示例,如果您通过模块 运行 函数中的 $localStorage
访问数据时没有 userData,则重定向到主状态。
angular.module("yourAppName")
.run(function ($rootScope, $state,$localStorage) {
$rootScope.$on("$stateChangeStart", function(event, toState, toParams, fromState, fromParams){
if(toState.name == 'app') return;
if (!$localStorage.userData){
$state.transitionTo("app");
event.preventDefault();
return;
}
});
});