在AngularJS中编写DI的最佳方法是什么?

时间:2015-01-20 04:27:30

标签: javascript angularjs dependency-injection coffeescript

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

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

我需要注入不同的TripListServiceTripListServiceFakeTripListServiceDevTripListServiceDist),但保留其他服务,例如$scope和{{1}不变。

我试着像这样重写它:

uiGmapGoogleMapApi

但我发现这不起作用,因为angularJS不支持部分内联数组DI。因此,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 ]) $scope也需要DI,但我不想为每个常量服务编写内联数组DI。

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

1 个答案:

答案 0 :(得分:0)

如何手动注入这样的东西?

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

当然return - s可以隐含。