嵌套函数无法访问全局变量

时间:2018-02-06 17:02:49

标签: typescript angular5 nested-function

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进行全局更改)。

1 个答案:

答案 0 :(得分:0)

更改

setTimeout(ender, 2000);

setTimeout(ender.bind(this), 2000);

或者,改变

this.startLoader(this.endLoader);

this.startLoader(this.endLoader.bind(this));

当你传递函数时,它会丢失它的上下文,所以它需要绑定到类实例。