【发布时间】:2016-11-14 03:08:18
【问题描述】:
编辑:
我能够解决这个问题,但我不知道为什么。所以,我修改了这个问题以反映我现在的立场。我将旧问题留作参考。
新问题:
将 lambda 函数更改为旧式函数修复了 TS 编译器无法在 $state 上找到属性的问题。我不知道为什么会这样。所以,我现在的问题是……
lambda 函数如何影响属性解析?还有..
如何确定何时使用 lambda 函数与旧式函数?
通过恢复到旧式函数来修复属性解析:
下面的老问题:
标题:TypeScript,Angular 1.x:$state.go 不存在——但它在同一个文件的其他地方存在
我正在将 Angular 1.5 应用程序从 vanilla JS 转换为 TypeScript。我遇到了一个奇怪的问题,$state 上的方法 go 存在且不存在于同一类中。
(在下图中可能很难看到,但请注意,在第二个this.$state.go 中,go 有一个红色下划线,因为编译器认为该属性不存在)
这是完整的课程:
export class LogoutAndInfoController implements ILogoutAndInfo {
public memberInfo: Object;
static $inject = [
'$http', '$state', 'AuthService', 'API_ENDPOINT', 'UserInfoService'
];
constructor(private $http: angular.IHttpService, private $state: angular.ui.IStateProvider,
private AuthService: AuthService, private API_ENDPOINT: IAPI_ENDPOINT, private UserInfoService: UserInfoService) {
this.memberInfo = {};
}
destroySession(): void {
this.AuthService.logout();
}
getInfo(): void {
this.$http.get(this.API_ENDPOINT["url"] + '/memberinfo').then(function (result) {
this.memberInfo = result.data["user"];
this.$state.go('login');
});
}
logout(): void {
this.AuthService.logout().then((result: any) => {
this.UserInfoService.resetUser();
this.$state.go('login');
});
}
}
我对 Angular 框架中的 TS 和 TS 都很陌生。所以,请让我知道在我们调试之前是否需要查看任何其他代码。
【问题讨论】:
标签: javascript angularjs typescript