【发布时间】:2014-02-18 19:15:26
【问题描述】:
我对 AngularJS 和 Web 开发非常陌生,并且在 C# 和 C++ 方面更有经验。 因此,我尝试使用 Typescript。
我现在正在开发一个控制器,但出现了一些奇怪的行为。 当使用下面代码中的登录功能时,会出现问题,服务 sessionService 和 userDataService 没有在 then 语句中定义。 在 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 吗?您如何注册您的服务?另外,您可以将构造函数参数更改为
public $scope: UserControllerScope,而不是说this.scope = $scope,但这不是导致您的问题的原因。 -
感谢您的评论。 Anthony Chu 的回答借给了我这个问题。它在当时的上下文中直接使用“this”。
标签: javascript angularjs typescript