我正在设置两种自定义方法。一个用于整个应用程序的全局通信,另一个用于处理http请求。我的http请求模块需要我的GlobalService才能运行。如何将GlobalService提供程序传递给CustomHTTP提供程序?
CustomHTTP
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/";
});
最后......我的app实例化
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);
我得到了同样的错误。
将模块相互传递的正确方法是什么?有什么我可以做得更好吗?
答案 0 :(得分:1)
您的customHTTPService
模块需要将GlobalService
模块列为依赖项。
angular.module("customHTTPService", ['GlobalService'])
但是,首先需要进行更改,以便在GlobalService
之前定义customHTTPService
,否则依赖项将失败。
您可以阅读有关模块和依赖项here的更多信息。