Angularjs 构造函数后的作用域为null

Angularjs 构造函数后的作用域为null,angularjs,typescript,Angularjs,Typescript,非常新的打字和角度。我试图通过close()方法关闭一个模式对话框。但是,当我调用close方法时,由于某种原因,作用域为null 这是对话框的控制器: module Controllers { export interface IDetailsScope extends ng.ui.bootstrap.IModalServiceInstance { Title: string; CloseModal(); } export class DetailsCont

非常新的打字和角度。我试图通过close()方法关闭一个模式对话框。但是,当我调用close方法时,由于某种原因,作用域为null

这是对话框的控制器:

module Controllers
{
export interface IDetailsScope extends ng.ui.bootstrap.IModalServiceInstance
{
    Title: string;        

    CloseModal();
}

export class DetailsController
{
    static $inject = ['$scope'];  

    Scope: IDetailsScope;  

    constructor($scope: IDetailsScope)
    {                           
        this.Scope = $scope;

        this.Scope.Title = "Hello World";  
        this.Scope.CloseModal = this.CloseModal;          
    }

    CloseModal()
    {            
        this.Scope.close();
    }
}
}
title属性通过模态对话框调用CloseModal方法,但范围未定义,因此此调用失败:

this.Scope.close();
这就是模态的显示方式:

this.ModalInstance = this.ModalService.open(
            {
                templateUrl: 'App/Views/Details/Details.html',
                controller: Controllers.DetailsController,
            });

谢谢

根据您的代码,确保您正在呼叫

CloseModal()
从你的HTML。因为这是你想要公开的范围

在控制器定义中传递函数时,还可以尝试使用lambda捕获“this”的上下文。i、 e

CloseModal = ()=> {

最后,我建议不要修改作用域并使用您的类作为VM,如本文所述:这在作用域继承方面具有其他优势。

启动调试器,查看CloseModal()中的“作用域”。this()可能未引用此实例HMMM上的“类上下文”。。。不太确定如何确定其是否在正确的范围内,但在CloseModal方法内检查this()对象后,只有它的父对象包含与类中定义的Title属性匹配的Title属性,不确定这是否意味着什么。如果在CloseModal()中调用close()/this.close(),该怎么办,不是这个.Scope.close()或Scope.close()不,这个.close()不是DetailsController中的方法,close()尝试关闭浏览器窗口。更喜欢使用controller作为vm,如本文所述:哦,太好了,是的,我删除了接口并设置了$Scope.vm=这个,它工作起来很有魅力,谢谢!