我有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