我正在玩sammy.js并且我在网址末尾有一个尾随斜线的问题。这是一个例子:
当网址看起来像#!users
时,我希望我的应用做一件特别的事情,我可以使用以下代码轻松实现这一点:
Sammy(function() {
this.get('#!users', function(){
console.log('users');
});
}).run();
问题在于我希望它与#!users/
的行为方式相同。假设我有很多这样不同的网址,我不想复制代码,sammy.js是否有办法以同样的方式处理url
和url/
?
答案 0 :(得分:1)
我有同样的问题,并决定在我的Sammy设置结束时用一个全能的方法修复它。我的解决方案删除尾部斜杠(如果有):
Sammy(function () {
this.get('#', function () {
// ...
});
this.notFound = function (method, path) {
if (path[path.length - 1] === '/') {
// remove trailing slash
window.location = path.substring(0, path.length - 1);
} else {
// redirect to not found
}
}
});
答案 1 :(得分:0)
在仔细阅读documentation之后,我发现了一个黑客来做这件事(没有具体方法可以有这样的行为)。所以我这样做的方式是:
Sammy(function() {
this.get('#!users/?', function(){
console.log('Users');
});
this.get('#!users/:id/?', function(){
console.log('User with id ' + this.params.id);
});
}).run();
所以,我需要的是最后添加/?
(正则表达式中的一个或0个)