当'/'用于父状态的url时,url中会出现两个斜杠

时间:2016-05-09 19:21:14

标签: angularjs angular-ui-router angular-ui

更新
我的假设是wrong。我期望url用通常产生最终路径的方式表示路径的组件以及相应的组合。但网址只是连接在一起,仅此而已。

我有以下状态:

.state('banksList',
{
    url: '/',
    ...
})
.state('banksList.bank',
{
    url: '/bank/{bankId}',
    ...             
})
.state('banksList.bank.branch',
{
    url: '/branch/{branchId}',
    ...
})

转换为banksList.bank浏览器显示http://bla-bla//bank/1后,基本标记指向http://bla-bla/

看起来网址只是连接在一起。我需要启用某种模式还是什么?

2 个答案:

答案 0 :(得分:1)

a working plunker

为了保持您的期望,您可以使用神奇的标志 ^ 。这实际上是对UI-Router说:"重启url定义,不要使用父部分"

.state('banksList',
{
    url: '/',
    ...
})
.state('banksList.bank',
{
    url: '^/bank/{bankId}',
    ...             
})
.state('banksList.bank.branch',
{
    url: '/branch/{branchId}',
    ...
})

请参阅:

Absolute Routes (^)

如果您想要绝对网址匹配,则需要在网址字符串前加上一个特殊符号' ^'。 ...

因此,正如示例plunker所示,这些链接将按预期工作

<a href="#/">
<a href="#/bank/B1">
<a href="#/bank/B2">
<a href="#/bank/B1/branch/A1">
<a href="#/bank/B2/branch/A22">

<a ui-sref="banksList">
<a ui-sref="banksList.bank({bankId: 'X1'})">
<a ui-sref="banksList.bank({bankId: 'X2'})">
<a ui-sref="banksList.bank.branch({bankId: 'X1', branchId: 'Y1'})">
<a ui-sref="banksList.bank.branch({bankId: 'X2', branchId: 'Y22'})">

action here

中查看

答案 1 :(得分:0)

url州的空字符串banksList有效:

.state('banksList', {
  url: '',
  ...
})
.state('banksList.bank', {
  url: '/bank/{bankId}',
  ...
})
.state('banksList.bank.branch', {
  url: '/branch/{branchId}',
  ...
})