SLe*_*ner 33 angularjs angular-ui angular-routing angular-ui-router
自从我开始研究这个问题已经有好几个小时了,我似乎无法理解解决方案.
我有一个应用程序,可能会导致用户实际输入URL.在这种情况下,不难相信用户可能会输入尾部斜杠.例如,
www.example.com/users/2和www.example.com/edit/company/123
应该像对待一样对待
www.example.com/users/2/和www.example.com/edit/company/123/
这只需要在客户端处理URL路由.我对处理资源/ API调用中的尾部斜杠不感兴趣.我只对处理浏览器中的尾随处理感兴趣.
所以我研究并发现网上的答案不多.他们中的大多数人都把我带到了angular-ui路由器的FAQ部分.
https://github.com/angular-ui/ui-router/wiki/Frequently-Asked-Questions
在这里,他们告诉我们写一条规则,这是我想要做的,但它似乎没有起作用,或者我做错了.
这是我添加代码的plunkr.
http://plnkr.co/edit/fD9q7L?p=preview
我已将此添加到我的配置中,其余代码几乎是基本的东西.
$urlRouterProvider.rule(function($injector, $location) {
//if last charcter is a slash, return the same url without the slash
if($location.$$url[length-1] === '/') {
return $location.$$url.substr(0,$location.$$url.length - 2);
} else {
//if the last char is not a trailing slash, do nothing
return $location.$$url;
}
});
Run Code Online (Sandbox Code Playgroud)
基本上,我想使尾随斜杠可选,即它在地址栏上的存在与否应该对加载的状态没有影响.
Rad*_*ler 26
有一个工作的plunker链接
这是更新的规则定义:
$urlRouterProvider.rule(function($injector, $location) {
var path = $location.path();
var hasTrailingSlash = path[path.length-1] === '/';
if(hasTrailingSlash) {
//if last charcter is a slash, return the same url without the slash
var newPath = path.substr(0, path.length - 1);
return newPath;
}
});
Run Code Online (Sandbox Code Playgroud)
这些链接现在可以正常工作:
<ul class="nav">
<li><a ui-sref="route1">Route 1</a></li>
<li><a ui-sref="route2">Route 2</a></li>
<li><a href="#/route1/">#/route1/</a></li>
<li><a href="#/route2/">#/route2/</a></li>
<li><a href="#/route1" >#/route1</a></li>
<li><a href="#/route2" >#/route2</a></li>
</ul>
Run Code Online (Sandbox Code Playgroud)
魔术可以像这样定义:如果有变化,请返回更改的值...否则什么都不做... 参见示例
小智 13
从ui-router版本0.2.11开始,你可以这样做:
$urlMatcherFactoryProvider.strictMode(false);
Run Code Online (Sandbox Code Playgroud)
这将以相同的方式处理带有和不带尾部斜杠的URL.
小智 6
我没有足够的代表发表评论,所以回答: -
$urlMatcherFactoryProvider.strictMode(false);
Run Code Online (Sandbox Code Playgroud)
需要在$stateProvider.state部分之前.
| 归档时间: |
|
| 查看次数: |
16341 次 |
| 最近记录: |