我有以下代码:
export class AuthService {
token: string;
refreshToken: string;
constructor(private router: Router) { }
signinUser(username: string, password: string) {
const user = new mylib.User(username, password);
user.requestSessionToken(true, {
onOk: function (result) {
let tokenMap: any;
tokenMap = result;
this.token = tokenMap.sessionToken;
this.refreshToken = tokenMap.refreshToken;
mylib.Datastore.configureWithSessionToken(this.token);
this.router.navigate(['/signup']);
},
onError: function (error) {
console.error(error);
}
});
console.log(this.token);
console.log('signinUser Called!');
}
}
mylib
是Javascript库,这不是指向我的对象所以this.token
不是在调用
如何在Javascript块中访问我的类字段?
答案 0 :(得分:1)
箭头功能就是答案。
export class AuthService {
token: string;
refreshToken: string;
constructor(private router: Router) { }
signinUser(username: string, password: string) {
const user = new mylib.User(username, password);
user.requestSessionToken(true, {
onOk: (result) => {
let tokenMap: any;
tokenMap = result;
this.token = tokenMap.sessionToken;
this.refreshToken = tokenMap.refreshToken;
mylib.Datastore.configureWithSessionToken(this.token);
this.router.navigate(['/signup']);
},
onError: (error) => {
console.error(error);
}
});
console.log(this.token);
console.log('signinUser Called!');
}
}
或(旧学校),您可以使用bind()
:(function (result) { ... }).bind(this)
原因是在onOK
回调中,这可能是user
个实例,而不是您的类。
在处理回调时,请务必小心this
。