如何忽略木偶路线中的尾随斜线?

时间:2016-07-12 18:39:34

标签: javascript backbone.js marionette

我在Marionettejs中定义路线如下:

var Mn = require('backbone.marionette');

var Router = Mn.AppRouter.extend({
    routes: {
        '': 'default',
        'login': 'login',     // http://localhost:8080/#/login
        'signup': 'signup'    // http://localhost:8080/#/signup
    }, 
    initialize: function () {
        var initData = this.getOption('keyInOptions');
    },
    // below are route functions
    default: function () {
        console.log('this is default route');
    }, 
    login: function () {
        console.log('this is login route');
    },
    signup: function () {
        console.log('this is signup route');
    }
});

module.exports = Router;

然后在浏览器中:

  

plugin

成功触发登录路线,但

  

http://localhost:8080/#/login

(在末尾添加一个正斜杠)不会触发登录路由功能。我知道我可以定义另一个路线条目:

...
'login': 'login',
'login/': 'login',
...

解决此问题,但此解决方案将使路由器定义中的条目加倍。有没有更好的方法来触发loginlogin/的相同路由处理程序?

1 个答案:

答案 0 :(得分:3)

您是否尝试用括号括起尾随斜杠?如下所示:

routes: {
    'login(/)': 'login'
}

来自主干documentation

  

路径的一部分可以通过将其括在括号中而成为可选路径   (/:可选)