Typescript:无法访问函数中的公共变量

时间:2018-05-14 20:26:59

标签: javascript typescript

我想访问myVariable内的init(),但变量为undefined,但我可以访问convert()内的变量。有什么建议我在这里缺少什么?

export const MyComponent: ng.IComponentOptions = {
    templateUrl: 'MyView.html',
    bindings: {
        myVariable: '<',
    },
    controller: common.createController(MyController)
};

export class MyController {

    public myVariable: MyVariable;

    constructor($scope) {
        this.scope = $scope;
        this.init().then(() => {
            this.convert();
        });

        private init(): Promise<void> {
        console.log("init(): ", this.myVariable); //Error --> undefined
        //Call REST API and return a promise            
    }

    private convert(): void {
        console.log("convert(): ", this.myVariable); //No Error
    }
}

1 个答案:

答案 0 :(得分:1)

通常会发生这种情况,因为在基础构造函数之前调用init() - 基本构造函数通常是将变量设置在视图库中。

我不知道你正在使用什么视图库,但它看起来像有角度的。在这种情况下,angular将在构造函数运行后设置绑定(它需要在分配绑定之前创建类,并且因为它不提供基类,所以它不能在构造函数中使用它进行绑定)< / p>

Angular API公开类似于react的生命周期方法,你需要在构造函数和绑定完成后调用的$onInit钩子。

您可以在此处阅读更多内容https://docs.angularjs.org/guide/component