서비스에서 약속을 사용하고 결과가로드되면 다른 페이지로 이동하려고합니다.
내 코드 :
export class PicasaAuthenticator
{
// Constructor
static $inject = [ '$window', '$location', '$http' ];
constructor(private window : ng.IWindowService, private location : ng.ILocationService, private http : ng.IHttpService)
{
}
// Private Functions
private validateToken(results : IAuthResults) : void
{
if(results && results.access_token)
{
var validateTokenURL : string = "https://www.googleapis.com/oauth2/v1/tokeninfo";
validateTokenURL += "?access_token=" + results.access_token;
this.http.get<ITokenValidationResult>(validateTokenURL);
this._validationPromise.then(this.handleTokenVerificationResult,this.handleTokenVerificationError);
}
}
private handleTokenVerificationResult(successResponse : ng.IHttpPromiseCallbackArg<ITokenValidationResult>) : void
{
this._validationPromise = null;
if(successResponse.data.audience = client_id)
{
this.location.path('/albums');
}
else
{
alert("audience does not match client ID");
}
}
}
문제는 물론 this.location이 handleTokenVerificationResult에 존재하지 않는다는 것입니다. 이 함수를 실행할 범위를 어떻게 설정합니까? 나는 var self = this를 사용하는 예를 보았지만 (나는 어쨌든 좋아하지 않는다), 그러나 이것은 효과가 없었다.
도움 주셔서 감사합니다.
대신 this.window.location의 window.location을 시도하십시오. –