Angularjs 构造函数后的作用域为null
非常新的打字和角度。我试图通过close()方法关闭一个模式对话框。但是,当我调用close方法时,由于某种原因,作用域为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
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=这个,它工作起来很有魅力,谢谢!