ES6 AngularJS 1 $注入继承

时间:2017-08-20 12:47:58

标签: angularjs ecmascript-6

我有3个子控制器扩展单个父控制器,如下所示:

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的第三个依赖关系是AService而不是BService

所以所有的孩子都有相同的注入数组

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

而不是他们自己的。

这有什么好办法吗?或者我是否必须创建一种提供者服务来决定传递哪个服务?

他们将完成相同的任务,但使用来自不同服务的数据,所以我想尝试保留这种继承结构。

1 个答案:

答案 0 :(得分:1)

如何在子控制器中使用副本?

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

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