В вашем примере, где вы можете указать модули, а не инъекции зависимостей (DI). Ниже рассматриваются это изменение кода:
.controller('HomeController', [A , function(B) {}]);
Второй (В) требуется, первый (А) не является обязательным (но описано ниже преимущества).
Вот пример только с использованием только второй (В) от угловой документации:
function MyController($scope, greeter) {...}'
Но Javascript minifiers и обфускаторы могут переименовывать параметры и разорвать этот подход, поскольку угловые предпологает, например, $ возможности для быть названным точно $ scope (и minifiers, например, чтобы переименовать параметры как можно меньше, чтобы уменьшить размер файла как можно меньше).
Один из способов, среди прочего, вокруг которого является рядной аннотацией:
someModule.factory('greeter', ['$window', function(renamed$window) {...}]);
(опять из угловых Docs). Это оборачивается проблемой, поскольку мини-игроки/не изменят строковый литерал. И угловой знает, чтобы ввести службу с этим именем строки в согласованный параметр внутри функции. Таким образом, имя параметра может быть изменено на что-либо с помощью minifier, и все это хорошо, так как единственное, что имеет значение, - это позиция сервиса в списке строк/параметров (первая строка соответствует первому параметру и т. Д.).
Для многое другое на инъекции зависимостей: http://docs.angularjs.org/guide/di
'ONE PLACE TO DO IT' на самом деле является местом для добавления модулей – SET