Читать глобальную переменную Ionic - PullRequest
0 голосов
/ 10 января 2019

Я получаю токен доступа через службу, объявляю глобальную переменную и пытаюсь использовать полученный токен в другой функции или странице. Но мне всегда возвращается «НЕ УКАЗАНО», что я делаю не так?

@Injectable()
export class AuthService {
public globalToken: string;

constructor(...){}

getToken() {

var request = require('request');

return request.post({
  uri: "https://api.sandbox.paypal.com/v1/oauth2/token",
  headers: {
    "Accept": "application/json",
    "Accept-Language": "en_US",
    "content-type": "application/json"
  },
  auth: {
    'user': 'xxxxxxx',
    'pass': 'xxxxxxx',
    // 'sendImmediately': false
  },
  form: {
    "grant_type": "client_credentials"
  }
}, function (error, response, body) {
  let json = JSON.parse(body);
  // console.log('token', JSON.stringify(json.access_token));
  this.globalToken = json.access_token;
  console.log('tokentoken', this.globalToken);


});


}

но когда я пытаюсь получить доступ к "globalToken" в другой функции, возвращаем "undefined".

testToken() {
this.globalToken;
console.log('testtoken', this.globalToken);  //  I CAN SEE THE TOKEN
}

1 Ответ

0 голосов
/ 10 января 2019

Вам нужно использовать функцию стрелки при обратном вызове, так как this относится к контексту функции, когда вы используете синтаксис функции для ее объявления:

@Injectable()
export class AuthService {
public globalToken: string;

constructor(...){}

getToken() {

var request = require('request');

return request.post({
  uri: "https://api.sandbox.paypal.com/v1/oauth2/token",
  headers: {
    "Accept": "application/json",
    "Accept-Language": "en_US",
    "content-type": "application/json"
  },
  auth: {
    'user': 'xxxxxxx',
    'pass': 'xxxxxxx',
    // 'sendImmediately': false
  },
  form: {
    "grant_type": "client_credentials"
  }
},(error, response, body) => {
  let json = JSON.parse(body);
  // console.log('token', JSON.stringify(json.access_token));
  this.globalToken = json.access_token;
  console.log('tokentoken', this.globalToken);
});

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...