角度类变量失去价值

时间:2017-04-28 14:49:27

标签: angular

使用Angular2,我有一个http.get如下:

this.http.post('http://localhost/Authenticated/Token', loginData, options).subscribe(function (data) {
    console.log(JSON.stringify(data, null, 4));
    if (data.status === 200) {
        this.response = data.json();
        this.access_token = this.response.access_token;
        alert(this.access_token);
    }
});

在运行时正确设置this.access_token的值。但是一旦方法结束,它就会失去价值。我试图在方法中的其他地方使用它,但它说未定义。

修改

这是附加到按钮上的触发器的方法,我在看到上一个方法的响应后调用:

getBlogEntries() {
    alert(this.access_token);
    let headers = new Headers();
    headers.append('Authorization', 'Bearer ' + this.access_token);

    let options = new RequestOptions({
        headers: headers
    });

    if (this.access_token) {
        this.http.get('http://localhost/Authenticated/BlogEntries/', options).subscribe(result => {
            this.blogEntries = result.json().Data;
            console.log(this.blogEntries);
        });
    }
}

1 个答案:

答案 0 :(得分:0)

尝试以下代码:

this.http.post('http://localhost/Authenticated/Token', loginData, options).subscribe(function (data) {
    console.log(JSON.stringify(data, null, 4));
    if (data.status === 200) {
        this.response = data.json();
        this.access_token = this.response.access_token;
        alert(this.access_token);
    }
}.bind(this));

它应该可以解决您的问题。

如果您在ECMA 6.0中编码,还有一个替代方案:

this.http.post('http://localhost/Authenticated/Token', loginData, options).subscribe((data) => {
        console.log(JSON.stringify(data, null, 4));
        if (data.status === 200) {
            this.response = data.json();
            this.access_token = this.response.access_token;
            alert(this.access_token);
        }
    });