构造函数后,Scope为null

时间:2014-02-16 12:20:53

标签: angularjs typescript

在打字稿和角度方面相当新鲜。我正在尝试通过close()方法获取模式对话框。但是,当我调用close方法时,范围因某种原因为空。

这是对话框的控制器:

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,
            });

由于

1 个答案:

答案 0 :(得分:2)

鉴于您的代码,请确保您正在致电

CloseModal()

来自您的HTML。因为那是希望你暴露在范围内。

在控制器定义中传递函数时,还尝试使用lambda来捕获'this'的上下文。即。

CloseModal = ()=> {

最后,我建议不要修改范围并将您的类用作VM,如下所述:http://www.youtube.com/watch?v=WdtVn_8K17E&hd=1在范围继承方面具有额外的优势。