Javascript 用typescript编写的角度服务在控制器内未定义
我正在用typescript实现一个简单的angular应用程序。我将服务引用传递给控制器,但是当我尝试调用服务的方法时,我得到一个异常,表示服务引用未定义。dataAccessLayer模块作为控制器所属的clinicManager模块中的依赖项正确添加 我的服务: 控制员: app.js index.htmlJavascript 用typescript编写的角度服务在控制器内未定义,javascript,angularjs,typescript,Javascript,Angularjs,Typescript,我正在用typescript实现一个简单的angular应用程序。我将服务引用传递给控制器,但是当我尝试调用服务的方法时,我得到一个异常,表示服务引用未定义。dataAccessLayer模块作为控制器所属的clinicManager模块中的依赖项正确添加 我的服务: 控制员: app.js index.html 如果我在控制器中删除对Patient的引用,服务将得到正确的实例化,那么服务将正常工作。我将代码放在这里是为了更好地显示格式: module app.PatientDetails{
如果我在控制器中删除对Patient的引用,服务将得到正确的实例化,那么服务将正常工作。我将代码放在这里是为了更好地显示格式:
module app.PatientDetails{
interface IPatientDetails{
// patient: app.Model.IPatient;
}
import accessLayer = app.dal.DataAccessService;
export class PatientDetailsCtrl implements IPatientDetails{
private dataAccessService: accessLayer;
static $inject = [/*'patient',*/'dataAccessService'];
constructor(/*public patient:app.Model.IPatient,*/ dataAccessService:accessLayer){
this.dataAccessService = dataAccessService;
// The function is now called properly
var patient = dataAccessService.get(1);
}
}
angular.module('clinicManager')
.controller('patientDetailsCtrl', ['dataAccessService',PatientDetailsCtrl]);
}
您的脚本顺序正确吗?我用脚本顺序更新了请求。在我看来,顺序是正确的。
module app.PatientDetails{
interface IPatientDetails{
patient: app.Model.IPatient;
}
import accessLayer = app.dal.DataAccessService;
export class PatientDetailsCtrl implements IPatientDetails{
private dataAccessService: accessLayer;
static $inject = ['patient','dataAccessService'];
constructor(public patient:app.Model.IPatient, dataAccessService:accessLayer){
this.dataAccessService = dataAccessService;
// -> TypeError: Cannot read property 'get' of undefined
var patient = dataAccessService.get(1);
}
}
angular.module('clinicManager')
.controller('patientDetailsCtrl',['dataAccessService',PatientDetailsCtrl]);
}
angular.module('clinicManager',['ngMaterial','dataAccessLayer']);
<!-- Application scripts-->
<script src="app.js"></script>
<!-- Services-->
<script src="DataAccessLayer/DataAccessService.js"></script>
<!-- Controllers-->
<script src="Controllers/PatientDetailsCtrl.js"></script>
module app.PatientDetails{
interface IPatientDetails{
// patient: app.Model.IPatient;
}
import accessLayer = app.dal.DataAccessService;
export class PatientDetailsCtrl implements IPatientDetails{
private dataAccessService: accessLayer;
static $inject = [/*'patient',*/'dataAccessService'];
constructor(/*public patient:app.Model.IPatient,*/ dataAccessService:accessLayer){
this.dataAccessService = dataAccessService;
// The function is now called properly
var patient = dataAccessService.get(1);
}
}
angular.module('clinicManager')
.controller('patientDetailsCtrl', ['dataAccessService',PatientDetailsCtrl]);
}