2015-08-31 24 views
1

如何訪問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

回答

2

也就是說在JavaScript全世界共同的問題,那就是爲什麼我們會在ES7功能綁定表達式:this.$scope.okCmd = ::this.okCmd;

現在你可以使用將存儲構造函數的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'); 
    } 
    } 
} 
+0

非常感謝你的解釋。即使我知道這一點,但仍需要大量的練習。 – celerno

相關問題