gpt4 book ai didi

AngularJS 中从服务到 Controller 的 JavaScript 本地存储值

转载 作者:太空宇宙 更新时间:2023-11-04 16:18:34 26 4
gpt4 key购买 nike

我正在 AngularJS 服务中设置本地存储值,并尝试在 AngularJS Controller 中获取该值。但是在 Controller 中,获取空值而不是我在服务中设置的值。

这是我设置本地存储值的服务:

app.factory('accountService', ['$http', '$q', 'serviceBasePath', 'userService', '$window', function ($http, $q, serviceBasePath, userService, $window) {
var fac = {};
fac.login = function (user) {
var obj = { 'username': user.username, 'password': user.password, 'grant_type': 'password' };
Object.toparams = function ObjectsToParams(obj) {
var p = [];
for (var key in obj) {
p.push(key + '=' + encodeURIComponent(obj[key]));
}
return p.join('&');
}

var defer = $q.defer();
$http({
method: 'post',
url: serviceBasePath + "/token",
data: Object.toparams(obj),
headers: { 'Content-Type': 'application/x-www-form-urlencoded' }
}).then(function (response) {
userService.SetCurrentUser(response.data);

// The local storage value I have set

localStorage.setItem('IsAuthenticated', true);
localStorage.setItem('userName', response.username);

defer.resolve(response.data);
}, function (error) {
defer.reject(error.data);
})
return defer.promise;
}
fac.logout = function () {
userService.CurrentUser = null;
userService.SetCurrentUser(userService.CurrentUser);

}
return fac;
}])

这是我尝试获取先前设置的本地存储值的 Controller :

app.controller('indexController', ['$scope', 'accountService', '$location', '$window', function ($scope, accountService, $location, $window) {

$scope.message = localStorage.getItem("IsAuthenticated");
console.log($scope.message);

$scope.logout = function () {
accountService.logout();
$location.path('/login');
}

}])

问题是我得到的是空值,而不是我在服务中设置的值。

请帮忙!

最佳答案

使用 Angular 处理浏览器存储的最佳方法是:

1) 创建一个服务,使用通过服务公开的通用方法来处理 localStorage、sessionStorage、cookie。

2)此服务将由 Controller 特定服务使用,此服务还处理将用于存储在存储中的 key 。

3)此服务将公开 Controller 使用的更具体的方法。

例如:

用户 Controller :

userService.setUserSession(session)

用户服务:

var SESSION_KEY = 'userSession';
setUserSession() {
storageService.sessionStorageProvider.set(SESSION_KEY, session)
}

存储服务:

// here you need to create generic method using inheritance which will expose sessionStorage and loacalStorage and cookieStorage.

关于AngularJS 中从服务到 Controller 的 JavaScript 本地存储值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40859138/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com