我有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' ]
而不是他们自己的。
这有什么好办法吗?或者我是否必须创建一种提供者服务来决定传递哪个服务?
他们将完成相同的任务,但使用来自不同服务的数据,所以我想尝试保留这种继承结构。
答案 0 :(得分:1)
如何在子控制器中使用副本?
ChildAController.$inject = [...ParentController.$inject, 'AService'];
ChildBController.$inject = [...ParentController.$inject, 'BService'];