如何解决在angularUI路由器中处理尾部斜杠
这是更新的规则定义:
$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;
}
});
这些链接现在将正常工作:
<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>
魔术可以这样定义:如果有更改,请返回更改后的值…否则不执行任何操作…请参阅示例
解决方法
自从我开始解决这个问题已经有几个小时了,我似乎无法解决这个问题。
我有一个可能会导致用户实际输入URL的应用程序。在这种情况下,不难相信用户可能会输入斜杠。例如,
应该与
只需在客户端处理URL路由即可。我对处理资源/ API调用中的尾部斜杠不感兴趣。我只对处理浏览器中的斜线感兴趣。
因此,我研究并在网上找不到很多答案。他们中的大多数人把我带到了angular-ui路由器的FAQ部分。
https://github.com/angular-ui/ui-router/wiki/Frequently-Asked-
Questions
他们在这里告诉我们写一条规则,这是我想做的,但是它似乎没有用,或者我做错了。
这是我添加代码的代码库。
http://plnkr.co/edit/fD9q7L?p=预览
我已经将此添加到配置中,其余的代码几乎是基本的东西。
$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;
}
});
基本上,我想使斜杠为可选,即地址栏中是否存在斜杠对加载的状态没有影响。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。