Я пытаюсь настроить $http
службу Угловое, чтобы перенаправить на URL, когда код состояния 403.
Никаких проблем до сих пор, но URL для перенаправления приходит с сервера, через службу, которая использует $http
(добросовестно).
Вот кусок кода:
angular
.module('app')
.config(['$httpProvider', function($httpProvider) {
$httpProvider.interceptors.push(['$q', 'URLs',
function($q, Redirect) {
return {
request: function(config) {
return config || $q.when(config);
},
responseError: function(response) {
if(response.status === 403) {
// redirect to URLs.login
}
return $q.reject(response);
}
};
}
]);
}])
.factory('URLs', ['$http', function($http) {
var URLs;
$http.get('/urls').then(function(response) {
URLs = response.data;
});
return URLs;
}]);
Этот код создает круговую зависимость (ошибки) в Угловое.
Есть ли способ, которым я могу это сделать, с динамическими URL-адресами, поступающими с сервера, и на основе этого перенаправить пользователя на один из них, когда response.status
- это 403?
Это не работает, в обоих случаях! Угловая выбрасывает ту же «Циркулярную зависимость найденную: URLs <- $ http <- $ compile' –
Gah. Извините, инъекция не была ленивой: переместил ее в функцию 'responseError', и теперь она работает: http://plnkr.co/edit/gEI8jq5B3xUt7KOxOAf5?p=preview –
Спасибо! Это сработало! –