参数路由不是重定向到页面404

时间:2015-05-09 02:04:35

标签: javascript angularjs routes

我请他们帮助解决这个问题,请遵循以下代码:

控制器

   angular.module('tareasApp')
  .controller('HumorCtrl', function ($scope, $route, $location) { 

    $scope.pageName = $route.current.params.pageName;

$scope.items =[
 {    
      href:'/humor/smile-today', 
      img:'smile.jpg', 
      descricao:'Those Relaxing Sounds of Waves'
 }
];
 });

  angular.module('tareasApp')
  .controller('NewsCtrl', function ($scope, $route, $location) { 

    $scope.pageName = $route.current.params.pageName;

$scope.items =[
 {    
      href:'/news/news-today', 
      img:'news.jpg', 
      descricao:'Those Relaxing Sounds of Waves'
 }
];
 });

App.js

myApp.config(function ($routeProvider, $locationProvider) {
    $locationProvider.html5Mode(true);
    $routeProvider
      .when('/', {
        title: 'Home Page',
        templateUrl: 'views/main.html',
        controller: 'MainCtrl'
       })
      .when('/humor/:pageName', {
        templateUrl: 'views/wizard.html',
        controller: 'HumorCtrl'
      })
      .when('/news/:pageName', {
          templateUrl: 'views/wizard.html',
          controller: 'NewsCtrl'
      })
      .otherwise({
        redirectTo: '/'
      });
  }); 

当我在栏后面输入任何不存在的路线时,例如:

  

domain.com/hhhoedr

返回起始页面。

问题出在子目录中,其中包含$routeParams,键入不存在的页面,例如:

  

domain.com/humor/hhhoedr

不会重定向到index.html或404.html。

我想将此代码I found in another answer改编为我的应用。

  myApp.constant('EXISTING_PAGES', [
    'page1',
    'page2',
    ...
]);

  resolve: {
                exists: function ($location, $route) {

                    if (EXISTING_PAGES.indexOf($route.current.params.page) === -1) {

                        $location.path('/error/404');
                    }
                    return true;
                }
            }


        .when('/error/404', {
            templateUrl: '404.html'
        })
        .otherwise({
            redirectTo: '/error/404'
        });

我该怎么办?

1 个答案:

答案 0 :(得分:0)

当您键入任何路由e.g-domain.com/hhhoedr时,它将返回到起始页面,因为检查您的代码的最后一部分,您将如下所示进行设置。

.otherwise({
        redirectTo: '/'
      });

如果你要设置除了所有.when部分以外的任何内容,它将简单地重定向到起始页面。尝试将其设置为根据您的要求重定向到任何其他页面。

好的,现在你可以写下面的内容了。

.otherwise({
            redirectTo: '/here give your destination path(e.g-404.html...etc)'
      });