我一直试图找出处理从Angular中的API获得204/404的最佳方法。我当前的平面只是删除当前视图,而是显示一个向用户发送消息的框。
这似乎是$http.interceptors
的工作,所以我设置了我的配置:
angular.module('myApp', [])
.config(function($stateProvider, $urlProvider, $httpProvider, myUrls) {
$stateProvider
.state('home', {
url: '/home',
controller: 'HomeCtrl',
templateUrl: '/path/to/template/home.html'
})
.state('error', {
url: '/error',
controller: 'ErrorCtrl',
templateUrl: '/path/to/template/error.html'
});
$httpProvider.interceptors.push(function() {
return {
response: function(res) {
if(res.config.url === myUrls.data && [204, 404].indexOf(res.status) > -1) {
// show the error message
}
}
};
});
})
.constant('myUrls', { data: '/api/endpoint' });
问题在于,如果我在我的$state
中添加了尝试依赖注入$httpProvider
,以便我可以使用$state.go
导航到错误页面,我创建了一个循环依赖:
Uncaught Error: [$injector:cdep] Circular dependency found: $http <- $templateFactory <- $view <- $state <- $http
我错过了什么吗?返回特定状态代码时,是否有更好的方法可以向用户触发状态/异常消息?我是否应该为此目的使用ui.router
?
答案 0 :(得分:1)
有几种方法可以解决这种循环依赖问题。例如: