Коды без инъекций инлайн зависимости массив выглядит следующим образомЛучший способ написать DI в AngularJS?
angular
.module('app')
.controller('TripListController',
(TripListService, $scope, uiGmapGoogleMapApi) ->
return
)
.controller('UserListController',
(UserListService, $scope, uiGmapGoogleMapApi) ->
return
)
Что мне нужно вводить разные TripListService
(TripListServiceFake
, TripListServiceDev
или TripListServiceDist
), но сохранить другие услуги, такие как $scope
и uiGmapGoogleMapApi
без изменений.
Я пытался переписать так:
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. Поэтому $scope
и uiGmapGoogleMapApi
также нуждаются в DI, хотя я не хочу писать встроенный массив DI для каждой постоянной службы неуклюже.
Кроме того, я обнаружил, что это все еще выглядит неуклюжим, есть ли лучший способ для таких рефакторинговых кодов?
Существует 4 способа записи DI, 1) Неявная аннотация (без явного DI, но не минимизация безопасности), 2) Явная аннотация с записью массива, 3) Явная аннотация с помощью $ injection 4) То же, что и # 1, но с использованием ng -номенять библиотеку, чтобы позаботиться о проблеме минимизации. Не знаете, что вы пытаетесь сделать? Вы можете посмотреть шаблоны [угловой DI] (https://docs.angularjs.org/guide/di). – PSL
взгляните на то, как это предлагает 'john papa'. просто google для john papa, руководство стиля angularjs – harishr