【问题标题】:Redirect to a 404 after a GET errorGET 错误后重定向到 404
【发布时间】:2017-06-22 17:29:36
【问题描述】:

是否可以在特定控制器中重定向而不更改 URL?我希望这样,如果进入控制器我有来自 GET 请求的错误,它必须向我显示 404 页面。例如,我有以下文件。

index.html:

<!DOCTYPE html>
<html ng-app="app" ng-controller="MainCtrl">
<head>
    ...
</head>
<body>
    ...
    <ng-view></ng-view>
    ...
</body>
</html>

app.js:

angular
.module('app', [...])
...
.config(function($routeProvider) {
    $routeProvider
    .when('/', {
        templateUrl: 'views/home.html',
        controller:  'HomeCtrl'
    })
    .when('/page1', {
        templateUrl: 'views/page1.html',
        controller:  'Page1Ctrl'
    })
    .when('/page2', {
        templateUrl: 'views/page1.html',
        controller:  'Page2Ctrl'
    })
    .when('/page3', {
        templateUrl: 'views/page3.html',
        controller:  'Page1Ctrl'
    })
    ...
    .otherwise({
        templateUrl: 'views/404.html',
        controller:  '404Ctrl'
    });
});

例如,重定向必须在 page1.js 中进行

angular.module('app')
.controller('Page1Ctrl', function($scope, $http) {
    $http.get(...).then(function() {
        // all ok.
    }, function() {
        // error, redirect to 404 page.
    });
});

我该怎么做?

【问题讨论】:

标签: angularjs redirect http-status-code-404


【解决方案1】:

404 page 的路线应该是:

.when('/404Page', {
    templateUrl: 'views/404.html',
    controller:  '404Ctrl'
});

您可以在interceptor 中按如下方式处理:

$provide.factory('MyHttpInterceptor', function ($q, $window ) {
    return {

        // On response failture
        responseError: function (rejection) {

          if(rejection.status==400)
             $state.go('404Page');

          return $q.reject(rejection);
        }
    }
  });
  //push interceptor into interceptors array
  $httpProvider.interceptors.push('MyHttpInterceptor');

希望对你有帮助。

【讨论】:

  • 你不必将拦截器推送到 $httpProvider.interceptors 数组..
  • 是的。我必须像这样将拦截器推入拦截器数组:$httpProvider.interceptors.push('MyHttpInterceptor')
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-11-26
  • 2023-03-27
  • 2015-08-01
  • 2018-05-02
  • 2017-01-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多