为Angular2完成http安装时达到此目的

时间:2016-11-28 21:28:15

标签: angular typescript

我试图简化问题并最小化下面的代码。试图实现的是在http安装完成时调用回调函数。正在调用回调方法,但this变量及其绑定变量无法访问,因为在完成asyn加载时this未定义。

load(callBackFn)this.http.get(this.sourceAddress).subscribe(
            op =>{     
    if(callbackFn)
    {
       callBackFn();
    }    
}

this.load(function()
 {
    //**THIS IS NULL HERE ? BUT ACTUALLY this.uniqueId is set**
     $('#' + this.uniqueId).css("display", "block");  
})

1 个答案:

答案 0 :(得分:0)

不确定为什么你会这样做,看起来有点混乱回调函数,你可以在订阅后访问你需要的任何类成员,但我想你必须绑定你想要的这个回调:

export class SomeComponent
{
    private sourceAddress = 'some/url';
    private uniqueId = 'spam';


    constructor(private http: Http)
    {
    }

    ngOnInit()
    {
        this.load(this.loadSuccess).bind(this);
    }

    load(callBackFn)
    {
        this.http
            .get(this.sourceAddress)
            .subscribe(
                response =>
                {
                    if (callBackFn)
                    {
                        callBackFn();
                    }
                  this.loadSuccess() //or just call it directly with no callback
                },
                error =>
                {
                    console.log(error)
                });
    }

    loadSuccess()
    {
        $('#' + this.uniqueId).css("display", "block");
    }

}