AngularJS在module.config中更改URL

Soh*_*ani 3 angularjs angular-routing restangular

Restangular在我的angularjs App中使用setErrorInterceptor并用于在一个地方处理响应错误.如果发生错误,我想将用户重定向到登录页面.我知道唯一的providers&constants可注射配置阶段.

var app = angular.module('ourstandApp', ['ngRoute', 'restangular', 'ui.bootstrap', 'ngCookies', 'angularFileUpload']);
    // Global configuration

    app.config(function (RestangularProvider, baseRequestConfig, $routeProvider, urlsProvider) {
        var getBaseRequestUrl = function () {
            return baseRequestConfig.protocol + "://" + baseRequestConfig.hostName + ":" + baseRequestConfig.portNumber + baseRequestConfig.resourcePath;
    }
        var initializeRoute = function () {
            $routeProvider.when('/', {
                controller: LoginController,
                templateUrl: 'views/login.html'
            }).
            otherwise({
                redirectTo: '/'
            });
        }

        initializeRoute();
        RestangularProvider.setBaseUrl(getBaseRequestUrl());
        RestangularProvider.setErrorInterceptor(function (resp) {
            goToLogin();  //  i want to change url to login page
            return false;
        });
    });
Run Code Online (Sandbox Code Playgroud)

Soh*_*ani 15

处理此问题的正确方法是在angularjs run方法中配置restangular

app.run(Restangular , $location){
    Restangular.setErrorInterceptor(function (resp) {
        $location.path('/login');
        return false;
    });
}
Run Code Online (Sandbox Code Playgroud)