如何访问NavService(即控制器的上下文)?
module MyModule {
export class MyClass {
public static $inject = ['$scope', 'NavService'];
constructor(private $scope: any, private NavService: MyWizard.NavService) {
this.$scope.okCmd = this.okCmd;
}
okCmd() {
this.NavService.next('details');
}
}
结果:NavService
未定义,因为this.
实际上代表$scope
。
答案 0 :(得分:2)
这是JavaScript世界中的常见问题,这也是我们在es7中使用函数绑定表达式的原因:this.$scope.okCmd = ::this.okCmd;
现在你可以使用一个lambda来将构造函数的this
指针存储在它的闭包中:
module MyModule {
export class MyClass {
public static $inject = ['$scope', 'NavService'];
constructor(private $scope: any, private NavService: MyWizard.NavService) {
this.$scope.okCmd = () => this.okCmd();
}
okCmd() {
this.NavService.next('details');
}
}
}