2017-08-20 1 views
1

を注入:

class ParentController { 
    constructor($scope, $state){ 
     this.$scope = $scope; 
     this.$state = $state; 
    } 
} 
ParentController.$inject = [ '$scope', '$state' ]; 

// CHILD A 
class ChildAController extends ParentController { 
    constructor($scope, $state, AService){ 
     super($scope, $state); 

     this.AService = AService; 
    } 
    // ... common functions 
} 
ChildAController.$inject.push('AService'); 

// CHILD B 
class ChildBController extends ParentController { 
    constructor($scope, $state, BService){ 
     super($scope, $state); 

     this.BService = BService; 
    } 
} 
ChildBController.$inject.push('BService'); 

私の問題は$inject配列で保持参照が存在することです。つまり、ChildBの第3の依存関係は、BServiceの代わりにAServiceであることを意味します。

だから、すべての子どもたちが同じ以下の注入のアレイの代わりに、独自の

$inject => [ '$scope', '$state', 'AService', 'BService' ] 

を持っています。

いい方法がありますか?または、どのサービスを引き継ぐかを決定するために、ある種のプロバイダサービスを作成する必要がありますか?

これらはすべて同じタスクを実行しますが、別のサービスのデータを使用しているため、この継承構造を維持してみてください。

答えて

1

子コントローラでコピーを使用することはどうですか?

ChildAController.$inject = [...ParentController.$inject, 'AService']; 

ChildBController.$inject = [...ParentController.$inject, 'BService']; 
+0

さて、私はこれらの3つのドットについて学ばなかったので、ボーナスです。ありがとう! – James

関連する問題