gpt4 book ai didi

javascript - 带斜线的 angularjs 路由

转载 作者:行者123 更新时间:2023-12-03 04:40:21 25 4
gpt4 key购买 nike

在下面的 AngularJS/Ui-router 示例中,我有一个通向 2 个状态的导航:

<body ng-app='myApp'>
<a ui-sref="home">Home</a>
<a ui-sref="news">News</a>
<ui-view></ui-view>
</body>


app.config(function($stateProvider){
$stateProvider.state('home', {
url : '/home',
template: '<h1>Home page</h1>'
});

$stateProvider.state('news', {
url : '/news',
template: '<h1>News page</h1>'
});
});

是的,正如您所知,总体来说一切正常。点击新闻链接将调用新闻状态等等。

但是,假设您的用户进入浏览器导航器并写道:

WEBSITEURL/news/ 在末尾添加斜杠 /!

噢不!它不会重定向到 WEBSITEURL/news

为什么/news有效而/news/无效?

一般来说,为什么 /uri 有效而 /uri/ 不起作用?

这根本不合逻辑。有什么好的解决方案可以摆脱这种情况?!

最佳答案

为您的 ui-router 配置添加新规则:

$urlRouterProvider.rule(function($injector, $location) {
var path = $location.path();
if(path[path.length-1] === '/';) {
var newPath = path.substr(0, path.length - 1);
return newPath
}

});

所以,你的代码变成了,

app.config(function($stateProvider){

$urlRouterProvider.rule(function($injector, $location) {
var path = $location.path();
if(path[path.length-1] === '/';) {
var newPath = path.substr(0, path.length - 1);
return newPath
}

});

$stateProvider.state('home', {
url : '/home',
template: '<h1>Home page</h1>'
});

$stateProvider.state('news', {
url : '/news',
template: '<h1>News page</h1>'
});
});

关于javascript - 带斜线的 angularjs 路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43119371/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com