在我第一次尝试解决此问题时,我询问了如何在following question posted here中为一个$状态设置多个静态网址。在发现Angular无法使用别名之后,我很快意识到这将是一个没有URL基础的问题,因为在URL中传递的所有内容都成为参数并搞砸了应用程序。
因此,为了从另一个角度解决这个问题,我想我可以使用正则表达式和sting匹配将传入的URL重新路由到其正确的Angular计数器部分。唯一的问题是我不知道Angular是否可以做到这一点而且我对正则表达式很糟糕......
因此考虑到我的原始帖子和设置我有一个像这样设置的当前路线。
.state('ball', {
parent: 'ballLayout',
url: '/ball/{urlName}',
views: {
'cube.head': {
templateUrl: 'partials/views/ball.head.html',
controller: 'BallCtrl'
}
}
});
外部Rails应用程序最多可以有4种不同的URL结构,这些URL结构都会路由到相同的标题,如此
球/标题页外
蝙蝠/标题页外
篮/标题页外
兽/标题页外
我想做的是让我的Angular应用程序匹配球,蝙蝠,篮子或野兽,并始终将其返回到球/标题页。
因此,如果有人从Rails一侧发出 beast / page-of-page 的链接,则会看到它并将其映射到到ball / title-of-page < / strong>即可。这可能吗?
答案 0 :(得分:1)
如果我正确理解您的问题,解决方案可能就像(查看工作plunker):
我们将使用
rule()
用于自定义网址处理这是片段:
$urlRouterProvider.rule(function ($injector, $location) {
var path = $location.path(),
searchFor = /(ball|bat|basket|beast)/i, // the regex
replaceWith = 'ball';
var wasFound = path.search(searchFor) > -1; // is there a match?
return wasFound
? path.replace(searchFor, replaceWith) // replace first occurance
: path;
});
现在,所有网址都是:
<li><a href="#/BALL/title-of-page-ball">ball</a></li>
<li><a href="#/bat/title-of-page-bat">bat</a></li>
<li><a href="#/basket/title-of-page-basket">basket</a></li>
<li><a href="#/beast/title-of-page-beast">beast</a></li>
将转换为:
href="#/ball/...."
工作plunker ...