如何用ui-router设置路由优先级?

时间:2015-06-14 07:11:00

标签: angularjs angular-ui-router

更具体地说:

我有路线myapp / about

另一条路线myapp /:userid

如何确保ui-router始终在/:userId?

之前匹配/约

1 个答案:

答案 0 :(得分:0)

你需要为这两个myapp/about创建一个状态,它将有一个名为about的状态&其他人将接受userId参数。

.state('about',{
  url: '/myapp/about',
  templateUrl: 'appp/views/about.html',
  controller: 'aboutController'
})

.state('userDetails',{
  url: '/myapp/:userid',
  templateUrl: 'appp/views/userDetails.html'
  controller: 'userDetailsController'
})

通过将其定义为不同的状态ui-router,只有当about网址出现在浏览器中时才会调用/myapp/about州名,当浏览器中出现/myapp/about以外的其他网址时致电userDetails状态,接受userid/myapp/将使用$stateParams服务获得该参数值。

为了让它更好,你可以在路线上添加正则表达式,只需要数字,或者你可以在那里设置任何regx,假设我只想接受3位数的数字,那么我将改变我的url选项我的状态为url: "/myapp/{userid:[0-9]{1,3}}",通过将此URL设置为状态,仅当状态包含3位数字时才会加载状态,如123111等。