我正在使用ui-router
,当我点击<a ui-sref="signup">Signup</a>
等链接时,状态会正常加载。
状态如下:
.state('signup', {
url: '/signup',
templateUrl: '/signup/signup.view.html',
controller: 'signupCtrl'
})
但是,当我在地址栏中输入地址时,会在网址中添加一个尾部斜杠。我意识到我可以创建一个额外的状态来处理这个问题,例如:
.state('signup2', {
url: '/signup/',
templateUrl: '/signup/signup.view.html',
controller: 'signupCtrl'
})
但这并不理想。有没有办法阻止斜线被添加?理想情况下,它并不涉及这样的黑客攻击:
//remove trailing slash from url so it matches states
$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;
}
});
因为这与我正在使用的其他内容发生冲突。
更新
我正在使用:
$locationProvider.html5Mode(true);
$urlRouterProvider.otherwise('/');
如果没有html5模式,问题就会消失。因此,例如,如果我键入/#/signup
,则不会添加尾部斜杠。
答案 0 :(得分:1)
我想我已经找到了问题的解决方案。将$urlMatcherFactoryProvider
注入应用程序的配置并设置:
$urlMatcherFactoryProvider.strictMode(false);