angularjs:$ http未在服务中定义

时间:2014-09-27 09:53:06

标签: javascript angularjs angular-services

我有3个文件:

app.js

angular.module("starweb", ["ngRoute", "ngAnimate", "ui.bootstrap"])
       .config(function ($routeProvider) {
       $routeProvider  ....

addHostingController.js

  angular.module("starweb")
  .controller("addHostingCtrl", function ($scope, domainService) {
        $scope.data.domains = domainService.getDomain();
}

domainService.js

angular.module("starweb")
.constant("domainList", "http://localhost:15536/api/product/xxxx")
.service("domainService", function ($http, $q,domainList) {
    return ({
        getDomain: GetDomains()
    });
});

function GetDomains() {
    $http.get(domainList).then(handleSuccess, handleError);
}

在页面源上,包含所有3个文件(首先是 app.js )。 Chrome会显示$http is undefined,我的设置出了什么问题?

谢谢大家。

1 个答案:

答案 0 :(得分:2)

GetDomains函数无法访问domainService范围,您已注入$http服务。

您应该将代码更改为以下内容:

.service("domainService", function ($http, $q, domainList) {
  return {
    getDomain: function (handleSuccess, handleError) {
      $http.get(domainList).then(handleSuccess, handleError);
    }
  };
});

您还应该定义handleSuccesshandleError回调,这肯定是getDomain函数的参数。