我如何访问 NavService(即 Controller 的上下文)?
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 中使用函数绑定(bind)表达式的原因: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/