CODE:
public loaderShow = false;
Onsubmit(form:any):void{
this.startLoader(this.endLoader);
}
public startLoader(ender) {
this.loaderShow = true;
setTimeout(ender, 2000);
}
public endLoader() {
this.loaderShow = false;
return this.loaderShow;
}
我想要发生什么:
提交表格 - >运行startLoader - >将loaderShow更改为true
2秒后 - >运行endLoader - >再次将loaderShow变为false
发生了什么:
提交表格 - >运行startLoader - >更改loaderShow为true
2秒后 - >运行endLoader - >无法访问loaderShow(将其视为未定义)
我需要做什么:
找到一种方法让endLoader()能够找到loaderShow(但是我的尝试失败了。我尝试将它作为参数传递给函数,但我不知道如何对loaderShow进行全局更改)。
答案 0 :(得分:0)
更改
setTimeout(ender, 2000);
到
setTimeout(ender.bind(this), 2000);
或者,改变
this.startLoader(this.endLoader);
到
this.startLoader(this.endLoader.bind(this));
当你传递函数时,它会丢失它的上下文,所以它需要绑定到类实例。