我有2个工厂:ApiService和LocationService。角度工厂依赖问题
在ApiService中,我想从LocationService将使用的$ http调用中返回端点。
但是,似乎控制器调用LocationService时,它不会等待来自ApiService的响应。下面是一些代码片段,在ApiService当我终于得到它的工作我会缓存,所以我不会需要将每一次服务器调用来获取端点:
services.factory("ApiService", ["$location", "$http", function ($location, $http) {
return {
getEndpointUrl: function() {
var endpoint;
$http({
method: 'GET',
url: '/site/apiendpoint'
}).then(function successCallback(response) {
endpoint = response.data;
console.log(endpoint);
return endpoint;
}, function errorCallback(response) {
console.error('Error retrieving API endpoint');
});
}
}
}]);
这里是位置服务,它消耗ApiService:
services.factory("LocationService", ["$resource", "ApiService", function ($resource, apiService) {
var baseUri = apiService.getEndpointUrl();
return $resource(baseUri + '/location', {}, {
usStates: { method: 'GET', url: baseUri + '/location/us/states' }
});
}]);
当我的控制器试图调用LocationService.usStates的基本URI是不确定的。我在这里做错了什么?
嗨,这将是完美的,但我该如何设置该动态的第一次?由于我必须从另一个端点获取端点,因此如果这有意义,那么每个环境的该端点可能会有所不同。 – TheWebGuy
您使用哪种服务器端技术? – DerekMT12
.NET MVC(返回API endpoing)和另一个Web API 2项目(即端点)。我最初的想法是根据它们所在的位置(location.host())设置端点,但我正在寻找更清洁的东西,我在web.config中设置了该设置。 – TheWebGuy