使用尾部斜杠重定向角度路径

时间:2013-09-27 08:45:32

标签: angularjs angular-routing

要求:

/month      Redirect to /month/1   (january is the default month)
/month/     Redirect to /month/1
/month/4    No redirect, show april

我最好的尝试:

$routeProvider
  .when('/month/:monthNo', {
    templateUrl: 'views/month.html',
    controller: 'MonthCtrl'
  })

这有效:

  .when('/month', {
    redirectTo: '/month/1'  // default redirect to january
  })

这不是(注意斜线: / month / ):

  .when('/month/', {
    redirectTo: '/month/1' 
  })

/month/匹配.when('/month/:monthNo'...所以这样就可以了:

  .when('/month/:monthNo', {
    runThisCodeFirst: function() { if(!monthNo) redirectTo: '/month/1'}
    templateUrl: 'views/month.html',
    controller: 'MonthCtrl'
  })

或者这个问题有其他解决办法吗?

1 个答案:

答案 0 :(得分:2)

你是否只是以错误的顺序进行.when调用?它们是链接的,所以第一个匹配.when将结束处理。如果我这样做就行了:

.when('/month', {
  redirectTo: '/month/1'
})
.when('/month/:monthNo', {
  template: 'This!'
})

但是,如果我这样做,我会看到你所描述的问题:

.when('/month/:monthNo', {
  template: 'This!'
})
.when('/month', {
  redirectTo: '/month/1'
})

显然'/月'也匹配'/ month /'。但'/ month /:monthNo'也是如此,因此您希望首先使用重定向规则。