3

Restangularangularjs アプリで使用し、setErrorInterceptor応答エラーを 1 か所で処理するために使用します。エラーが発生した場合にユーザーをログイン ページにリダイレクトしたい。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;
        });
    });
4

4 に答える 4

15

この問題を処理する正しい方法は、angularjs のrunメソッドで restangularを構成することです

app.run(Restangular , $location){
    Restangular.setErrorInterceptor(function (resp) {
        $location.path('/login');
        return false;
    });
}
于 2014-02-02T22:46:03.307 に答える
4

config ブロックに注入$injectorし、必要に応じて招待$locationします。

RestangularProvider.setErrorInterceptor(function (resp) {
   var $location = $injector.get('$location');
   $location.path('/login');
   return false;
});

私の他の回答もチェックしてください:

于 2014-01-30T02:02:15.913 に答える