对于url使用相同的路由,并在sammy.js中使用带有斜杠的url

时间:2014-03-08 05:32:08

标签: javascript url-routing sammy.js

我正在玩sammy.js并且我在网址末尾有一个尾随斜线的问题。这是一个例子:

当网址看起来像#!users时,我希望我的应用做一件特别的事情,我可以使用以下代码轻松实现这一点:

Sammy(function() {
    this.get('#!users', function(){
       console.log('users');
    });
}).run();

问题在于我希望它与#!users/的行为方式相同。假设我有很多这样不同的网址,我不想复制代码,sammy.js是否有办法以同样的方式处理urlurl/

2 个答案:

答案 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个)