在 AngularJS 中编写 DI 的最佳方式?

Best way to write DI in AngularJS?

没有内联数组依赖注入的代码如下所示

angular
.module('app')
.controller('TripListController',
  (TripListService, $scope, uiGmapGoogleMapApi) ->
    return
)
.controller('UserListController',
  (UserListService, $scope, uiGmapGoogleMapApi) ->
    return
)

我需要的是注入不同的 TripListServiceTripListServiceFakeTripListServiceDevTripListServiceDist)但保留其他服务,例如 $scopeuiGmapGoogleMapApi不变。

我试过这样重写:

useConfig = {
 fake: 
   TripListService: 'TripListServiceFake'
   UserListService: 'UserListServiceFake'
 dist:
   TripListService: 'TripListServiceDist'
   UserListService: 'UserListServiceDist'

}
angular
.module('app')
.controller('TripListController',[useConfig.fake.TripListService,
  (TripListService, $scope, uiGmapGoogleMapApi) ->
    return
])
.controller('UserListController',[useConfig.fake.UserListService,
  (UserListService, $scope, uiGmapGoogleMapApi) ->
    return
])

但我发现这不起作用,因为 angularJS 不支持部分内联数组 DI。因此,$scopeuiGmapGoogleMapApi也需要DI,虽然我不想笨拙地为每个常量服务编写内联数组DI。

而且,我发现这看起来仍然很笨拙,有没有更好的方法来重构这样的代码?

像这样手动注入怎么样?

angular
.module('app')
.controller((uiGmapGoogleMapApi, $scope, $injector) ->
    return $injector.invoke([useConfig.fake.TripListService,
      (TripListService) ->
         return 
    ]))

当然return-s可以隐含