[英]how to access typescript class member from Javascript callback in one of class local method
i have the folloing code: 我有以下代码:
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
is Javascript library and this is not pointing to my object so this.token
is not woking how can i access my class fields in Javascript block? mylib
是Javascript库,它没有指向我的对象,因此this.token
不能this.token
我如何访问Javascript块中的类字段?
Arrow function is the answer. 箭头功能就是答案。
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!');
}
}
alternatively (old-school), you can use bind()
: (function (result) { ... }).bind(this)
另外,(老式),您可以使用bind()
:( (function (result) { ... }).bind(this)
The reason is in the onOK
callback, this is probably the user
instance, not your class. 原因是在onOK
回调中,这可能是user
实例,而不是您的类。
Always be careful on what is this
when you are dealing with callbacks. 一定要加倍小心的是什么this
当你正在处理的回调。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.