2

我正在设置两种自定义方法。一个用于整个应用程序的全局通信,另一个用于处理 http 请求。我的 http 请求模块需要我的 GlobalService 才能运行。如何将我的 GlobalService 提供程序传递给我的 CustomHTTP 提供程序?

自定义HTTP

angular.module("customHTTPService", []).factory("$chttp", [
  "$http", "GlobalService", function($http, $parse) {
    var chttp;
    return chttp = function(method, url) {
      return $http({
        method: method,
        url: GlobalService.apiRoot + url
      }).success(function(data, status, headers, config) {
        return [data, status, headers, config];
      }).error(function(data, status, headers, config) {
        return [data, status, headers, config];
      });
    };
  }
]);

我的全球服务提供商

angular.module('GlobalService', []).factory("GlobalService", function($rootScope) {
  var sharedService, _ref;
  sharedService = {};
  return sharedService.apiRoot = (_ref = window.location.hostname) === "0.0.0.0" || _ref === "localhost" ? "http://localhost:3000/api/" : "http://website.com/api/";
});

最后..我的应用实例化

window.app = angular.module('web_client', ['GlobalService', 'customHTTPService'], function($routeProvider, $locationProvider) {});

所以为了测试这个,我把它扔到我的一个控制器中:

this.SettingsController = function($scope, $location, GlobalService, $http, $chttp) {
  $.v = $chttp;
};

然后我尝试在控制台中运行它..

$.v('get', '/index.html');

哪个返回:

ReferenceError: GlobalService is not defined

甚至更上游一点,如果我把它放在我的 customHTTPService 模块中......:

console.log(GlobalService);

我犯了同样的错误。

将模块相互传递的正确方法是什么?有什么我可以做得更好的吗?

4

1 回答 1

1

您的customHTTPService模块需要将该GlobalService模块列为依赖项。

angular.module("customHTTPService", ['GlobalService'])

但是,首先您需要更改以便GlobalService在之前定义您的customHTTPService,否则依赖项将失败。

您可以在此处阅读有关模块和依赖项的更多信息。

于 2013-01-31T20:32:34.850 回答