AngularJS在每个解析的基础上处理API错误

AngularJS在每个解析的基础上处理API错误,angularjs,angular-ui-router,Angularjs,Angular Ui Router,我正在使用AngularJS和UIRouter制作一个单页应用程序,调用RESTAPI获取json数据 我有一个像这样的app.config: .state('project', { url: '/project/:projectId/', views: { 'main': { templateUrl: 'partials/project.tmpl.html', controller: 'ProjectCtrl',

我正在使用AngularJS和
UIRouter
制作一个单页应用程序,调用RESTAPI获取json数据

我有一个像这样的
app.config

.state('project', {
    url: '/project/:projectId/',
    views: {
        'main': {
            templateUrl: 'partials/project.tmpl.html',
            controller: 'ProjectCtrl',
            resolve: {
                project: function ($stateParams, APIService) {
                    return APIService.get('projects/', $stateParams.projectId);
                },
                userprofiles: function (APIService) {
                    return APIService.list('userprofiles/');
                },
            }
        },
    }
}) 
我正在使用
应用程序处理API错误。运行

.run( function ($http, $cookies, $state, $rootScope) {
    $rootScope.$on('$stateChangeError', function (event, toState, toParams, fromState, fromParams, error) {
        $state.get('error').error = error;
        return $state.go('error');
    });
});
现在,这非常有效,我的API中的任何404表单都可以很容易地隐藏到
错误
状态以及相应的控制器和模板中

然而,我想要的是,如果从
projects
API端点返回404,我会得到这种行为(因为它是url的一部分),但是如果从
userprofiles
API端点返回错误,我可以返回,比如说,空对象,并在控制器中处理该错误。如果
项目将是
404,则可以认为该404是非关键的


我最好的方法是什么?当我构建此功能时,我希望能够处理其各自控制器中的某些API错误,以及一些全局级别的错误。

我在这里假设
APIService
调用返回一个承诺:

userprofiles: function (APIService) {
    // return the promise
    return APIService.list('userprofiles/').then(function(data){
        return data;
    },function(){ // and error occurred
        return {}; // return empty object on error.
    });
}
只要不将错误返回到正在解决的注入属性,
$stateChangeError
就不会发生