如何访问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
。 最佳答案
这是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');
}
}
}
关于javascript - 无法从$ scope的事件访问构造函数的上下文,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32319141/