如何强制子控制器等待父控制器

时间:2018-03-14 16:35:05

标签: angularjs typescript

我在父母和子女控制器之间进行通信时出现问题, 情况如下所示。在父控制器中,我有:

public $onInit = () => {
    this.swSubviewInfo.resolved.then((response: IDashboardResponseData) => {
        this.setGroupId(response.opid);
        this.updateTitle(response.objectName);
    });
}

private setGroupId(groupOpid: string) {
    this.$scope.groupId = parseInt(groupOpid.split("_")[1], 10);
}

我在子控制器的$ onInit中需要这个值,所以子控制器的启动应该等待在父控制器中解析函数。

如何防止读取未定义的情况?谢谢你的回答。

1 个答案:

答案 0 :(得分:0)

在子控制器的$watch中设置$onInit(),以便在执行任务之前等待scope属性具有有效值。

public $onInit = () => {
    var stopWatch = $scope.$watch('groupId', (newValue) => {
        if (newValue == "something valid") {
            //Do something with groupId
            stopWatch();
        }
    });
}