如何在ES5中编写的Angular 2中访问组件闭包?

时间:2017-03-17 07:11:48

标签: angular closures

我正在使用ES5编写Angular 2,在我的一个组件中我有这个JavaScript代码:

app.user = ng.core.Component({
    selector: 'user',
    templateUrl: '/html/account/user'
}).Class({
    constructor: function () {
        this.getUserInfo();
    },
    getUserInfo: function () {
        this.progress = true;
        this.user = app.http.get('/accountsUser/info', {withCredentials: true}).toPromise().then(function (response) {
            console.log(response);
            this.progress = false;
        });
    }
});

但是,在我的then函数中,我无法访问此属性,因为它未定义。 在Angular 1中,我们将在整个控制器声明函数中使用$ scope作为全局变量。在我们的Class定义对象中,我们不能在回调中使用全局变量。我该怎么办?

1 个答案:

答案 0 :(得分:1)

使用(response)=>

更改this.user = app.http.get('/accountsUser/info', {withCredentials: true}).toPromise() .then( (response)=> { console.log(response); this.progress = false; });

所以它看起来像

compile files('libs/httpclient-4.2.1.jar')

compile 'org.apache.httpcomponents:httpclient:4.5'

compile group: 'org.apache.httpcomponents' , name: 'httpclient-android' , version: '4.3.5.1'