ui.router:如何从URL中省略默认参数

New*_*Dev 8 angularjs angular-ui-router

我有以下状态定义$stateProvider:

$stateProvider.state("byTeams", {url : "/team/{id}/{year}", ...})
$stateProvider.state("byPlayer", {url : "/player/{id}/{year}", ...})
Run Code Online (Sandbox Code Playgroud)

更改一年时,我希望URL与URL的{year}部分匹配,如果它与默认值匹配(比如2014).换句话说,当:

$state.go("byTeams", {year: 2014}) --> www.example.com/app/#/team/343
$state.go("byTeams", {year: 2013}) --> www.example.com/app/#/team/343/2013
Run Code Online (Sandbox Code Playgroud)

当我切换到一个byPlayer视图(假设年份是2014年 - 默认):

$state.go("byPlayer", {id: 555}) --> www.example.com/app/#/player/555/
Run Code Online (Sandbox Code Playgroud)

否则,URL将是: www.example.com/app/#/player/555/2013

Chr*_*s T 16

阅读文档paramssquash$stateProvider.state()

$stateProvider.state("byPlayer", {
  url : "/player/{id}/{year}", 
  params: { 
    year: { 
      value: function() { return getCurrentYear(); },
      squash: true
    }
  }
})
Run Code Online (Sandbox Code Playgroud)