Angular.js dependency injection

Рейтинг: 2Ответов: 1Опубликовано: 19.03.2015

Только обучаюсь ангуляру, объясните разницу:

someApp.controller('someController', function($http){
   //что-то
});

и

someApp.controller('someController', ['$http', function($http){
   //что-то
}]);

Ответы

▲ 2Принят

Второй блок кода предохраняет от проблем обфускации кода при его минификации, например. Т.е. когда названия переменных изменяются Ангуляр, все равно будет правильно прозводить injection и определять, что первая переменная - это все-таки $http сервис, а не что-то другое. Ниже привожу пример до и после обфускации:

someApp.controller('someController', ['$http', function($http){
   $http.get().then(function(response){
       $scope.name = response.name;
   });
}]);

someApp.controller('someController', ['$http', function(b){
   b.get().then(function(a){
       s.name = a.name;
   });
}]);