Angular JS TypeError: $http is not a function

Brendan picture Brendan · Mar 23, 2016 · Viewed 13.1k times · Source

I have read through all the posts where people get this issue where $http is not a function, and it looks like for the most part it is due to injections being done in the wrong order.

My module definition looks like this:

angular.module("app", []).controller("appCtrl", ['$scope','$http',
    function ($scope, $http) {

...

    $scope.makeCall= function ($http) {
         console.log("HERE");
         $http({ method: 'GET', url: <url }).
            then(function (response) {

                console.log(response.data);
                return response.data;
            }, function (response) {

        });
    };
}
])

Any suggestions would be greatly appreciated.

Answer

Pankaj Parkar picture Pankaj Parkar · Mar 23, 2016

Remove $http parameter from makeCall function, which is killing the existence of $http dependency injected over controller. Basically when you are adding it on function, it is setted as undefined

$scope.makeCall= function () { //<-- removed $http dependency from here
   console.log("HERE");
   $http({ method: 'GET', url: 'url' })
      .then(function (response) {
            console.log(response.data);
            return response.data;
      }, function (response) {

      }
   );
};