AngularJS否则路由无法正常工作?

时间:2016-02-20 03:14:54

标签: angularjs

我的AngularJS重定向看起来像这样:

// create the module and name it asApp
var asApp = angular.module('asApp', ['ngRoute']);

// configure our routes
asApp.config(['$routeProvider', '$httpProvider', '$locationProvider', function($routeProvider, $httpProvider, $locationProvider) {
    $routeProvider

    // route for the home page
    .when('/', {
        title: 'Home of PeppyBurro – Radical Spanish learning tips and tricks for the adventurous learner',
        templateUrl : 'pages/home.html',
        controller  : 'mainController'
    })

    // route for the about page
    .when('/about', {
        title: 'About PeppyBurro – Radical Spanish learning tips and tricks for the adventurous learner',
        templateUrl : 'pages/about.html',
        controller  : 'mainController'
    })

    // route for the 404 page not found error
    .when('/notfound', {
        title: 'Page not found',
        templateUrl : 'pages/404.html',
        controller  : 'mainController'
    })

    .otherwise('/notfound', {
        title: 'Page not found',
        templateUrl : 'pages/404.html',
        controller  : 'mainController'
    })
}]);

我需要的是,当在URL中输入未定义的slug时,脚本将我路由到404.html。因此,如果用户输入mysite.com/#/about,则应向他显示about.html页面。这个位工作正常。但是当用户输入mysite.com/#/abc时,它应该向我显示我在404.html.otherwise指令中定义的.when('/notfound')页面。但是虽然.when('/notfound')位正在工作,但.otherwise位不起作用。有什么我想念的吗?

3 个答案:

答案 0 :(得分:5)

我认为你应该修改为:

 .otherwise({
      redirectTo: '/notfound'
  }

参考here

答案 1 :(得分:2)

.when和.otherwise是两回事。

。定义路线时 .otherwise设置路线尚未创建时的默认路线。 $routeProvider.otherwise source code

您有两种选择。

  1. 取出路径

    $routeProvider
        // ... other routes
        .otherwise({
            title: 'Page not found',
            templateUrl : 'pages/404.html',
            controller  : 'mainController'
        })
    
  2. 或使用.when定义404路由并将路径路径传递给.otherwise。

    $routeProvider
            // ... other routes
            .when('/notfound', {
                title: 'Page not found',
                templateUrl : 'pages/404.html',
                controller  : 'mainController'
        })
        .otherwise('/notfound');
    
  3. 希望这有帮助! 如果您有任何问题,请告诉我。

    修改

    // As of Angular 1.3
    
    .otherwise('/notfound')
    // is short hand for
    .otherwise({redirectUrl: '/notfound'})
    

答案 2 :(得分:0)

您可以使用redirectTo

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