gpt4 book ai didi

javascript - 如何从 Angular 中的其他函数访问工厂函数

转载 作者:行者123 更新时间:2023-11-28 07:23:40 26 4
gpt4 key购买 nike

我真的很想了解这一切是如何运作的。我觉得这应该可行。我有一个 Auth 工厂,当 jwt 过期时,它会调用其方法“委托(delegate)”,该方法使用刷新 token 获取新 token 。由于某种原因,我收到错误“_this.delegate 不是函数”。 (出于测试目的,我在这两种情况下都进行了委托(delegate))

webapp.factory('Auth', function($http, API_URL, $window, $location, jwtHelper ) {
var _this = this;
var delegate = function(){
$http.post(API_URL+'/admin/delegate', {refresh_token: $window.sessionStorage.refreshToken } ).success(function(result) {
$window.sessionStorage.authToken = result.token;
$window.sessionStorage.refreshToken = result.refresh_token;
console.log('delegate-result: '+JSON.stringify(result));
$location.path('/about');
//LocalService.set('authToken', JSON.stringify(result));
});
};
return {
//returns true if there is an auth token
isAuthenticated: function() {
var storedJwt = $window.sessionStorage.authToken;
console.log('stored JWT: '+storedJwt);
var storedPayload = jwtHelper.decodeToken(storedJwt);
console.log('payload: '+JSON.stringify(storedPayload));
if(jwtHelper.isTokenExpired(storedJwt)){
console.log('is expired expired: '+jwtHelper.getTokenExpirationDate(storedJwt));
_this.delegate();
} else {
console.log('is not expired expires: '+jwtHelper.getTokenExpirationDate(storedJwt));
//For testing
_this.delegate();
}
return $window.sessionStorage.authToken;
//LocalService.get('authToken');
},
delegate: delegate,
//login function, should be moved to login controller
login: function(email, password) {
var login = $http.post(API_URL+'/authenticate', {email: email, password: password } );
login.success(function(result) {
console.log('login-result: '+JSON.stringify(result));
$window.sessionStorage.authToken = result.token;
$window.sessionStorage.refreshToken = result.refresh_token;
$location.path('/about');
//LocalService.set('authToken', JSON.stringify(result));
});
return login;
},

最佳答案

您所需要做的就是从 _this.delegate() 中删除 _this

函数 delegate() 在您使用它的范围内。

factory中使用var没有任何问题。 服务是不同的

关于javascript - 如何从 Angular 中的其他函数访问工厂函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29996501/

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