Javascript 变量在函数中调用时总是未定义的
在回答我的问题之前,这里是我的Typescript类:Javascript 变量在函数中调用时总是未定义的,javascript,typescript,Javascript,Typescript,在回答我的问题之前,这里是我的Typescript类: export class Info { private currentId: number; private addToListButton: HTMLInputElement; constructor() { this.currentId = +(<HTMLInputElement> document.getElementById("Example")).value;
export class Info {
private currentId: number;
private addToListButton: HTMLInputElement;
constructor() {
this.currentId = +(<HTMLInputElement> document.getElementById("Example")).value;
this.addToListButton = <HTMLInputElement> document.getElementById("addToList");
this.registerEvents();
}
private registerEvents(): void {
this.addToListButton.addEventListener("click", (() => this.addToList()));
}
private addToList(): void {
var data: SomeModel;
data.id = this.currentId;
// ajax stuff
}
}
导出类信息{
private currentId:编号;
私有addToListButton:HTMLInputElement;
构造函数(){
this.currentId=+(document.getElementById(“示例”)).value;
this.addToListButton=document.getElementById(“addToList”);
这是registerEvents();
}
私有registerEvents():void{
this.addToListButton.addEventListener(“单击”,(()=>this.addToList());
}
私有addToList():void{
var数据:SomeModel;
data.id=此.currentId;
//ajax的东西
}
}
我的问题是,当我想要获取模型的“currentId”时,它总是未定义的。
另一个变量“addToListButton”可以在同一函数中使用,不会出现问题
我看不出有什么问题
谢谢你的帮助 在addToList()
方法中,关键字this
指的是事件上下文,而不是Info
对象上下文
要以这种方式使用,需要将方法绑定到类。将其添加到构造函数中:
this.addToList = this.addToList.bind(this);
函数
addToList
中的关键字this
在此处调用函数this.addToListButton.addEventListener时,不引用类Info
的实例(“单击”(()=>this.addToList())代码>
要使此
引用实例,请使用箭头函数:
private const addToList = (): void => { // Arrow function
var data: SomeModel;
data.id = this.currentId;
// ajax stuff
}
有一些关于什么是箭头函数的解释。@RandyCasburn我以前调试过构造函数中的位置,正确地感觉到了变量。因此,我相信这条路线是正确的。