在打字稿和角度方面相当新鲜。我正在尝试通过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,
});
由于
答案 0 :(得分:2)
鉴于您的代码,请确保您正在致电
CloseModal()
来自您的HTML。因为那是希望你暴露在范围内。
在控制器定义中传递函数时,还尝试使用lambda来捕获'this'的上下文。即。
CloseModal = ()=> {
最后,我建议不要修改范围并将您的类用作VM,如下所述:http://www.youtube.com/watch?v=WdtVn_8K17E&hd=1在范围继承方面具有额外的优势。