我在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;
然后在浏览器中:
成功触发登录路线,但
(在末尾添加一个正斜杠)不会触发登录路由功能。我知道我可以定义另一个路线条目:
...
'login': 'login',
'login/': 'login',
...
解决此问题,但此解决方案将使路由器定义中的条目加倍。有没有更好的方法来触发login
和login/
的相同路由处理程序?
答案 0 :(得分:3)
您是否尝试用括号括起尾随斜杠?如下所示:
routes: {
'login(/)': 'login'
}
来自主干documentation:
路径的一部分可以通过将其括在括号中而成为可选路径 (/:可选)