我对AngularJS和Web开发非常陌生,在C#和C++方面经验更丰富。 因此,我尝试使用Typescript。在Typescript中编写AngularJS控制器的最佳实践
我现在在控制器上工作,并有一些奇怪的行为。 当使用类似于下面代码中的登录函数时,会出现问题,即sessionService和userDataService没有在then语句中定义。 它可以在那之前和之后访问。
class UserController {
scope: UserControllerScope;
location: ng.ILocationService;
sessionService: SessionService;
userDataService: UserDataService;
constructor($scope: UserControllerScope,
$location: ng.ILocationService,
userDataService: UserDataService,
sessionService: SessionService){
this.scope = $scope;
this.location = $location;
this.userDataService = userDataService;
this.sessionService = sessionService;
}
loginUser(username: string, pw: string) {
var foundUser;
console.log(this.sessionService);
console.log(this.userDataService);
console.log("Got into LoginUser");
this.userDataService.getUserAsync(username, pw).then(function(foundUserFromDb) {
console.log(this.sessionService);
console.log(this.userDataService);
});
console.log(this.sessionService);
console.log(this.userDataService);
this.location.path("views/projects.html")
}
}
有没有一种方法需要被注入的定制服务,使他们能够接入无处不在的类或者你有更好的方法来处理服务和控制器的注射?
在此先感谢。
你如何创建控制器?你正在缩小你的JavaScript吗?你如何注册你的服务?也可以不用说'this.scope = $ scope',而只是将构造函数参数更改为'public $ scope:UserControllerScope',但这不是导致问题的原因。 – rob
感谢您的评论。 安东尼楚的回答让我解决了这个问题。它在当时的情况下直接使用“this”。 – thomacco