我目前有一个路由对象,它有几个常规页面,并且还希望添加一个顶级路由,其中第一个参数是用户名。
routes : {
'/' : 'main',
'/login' : 'login',
'/about' : 'about',
'/create' : 'create',
'/:username': 'getUser' //something like this
'*actions' : 'defaultHandler'
}
答案 0 :(得分:1)
如果我理解正确,你就在那里。只需添加username
作为getUser
函数的参数:
getUser: function(username) { /* do stuff */ }
但是有一个问题,因为你的最后两条路线都可以匹配任何东西。为了识别用户,您可以使用前缀来区分用户路由与最终splat匹配的所有内容。这样的事情就足够了:
routes : {
// ...
'/users/:username': 'getUser'
}
答案 1 :(得分:1)
当您的用户名为" about"或"创建"?命名空间您的路由并避免问题:
routes : {
'/' : 'main',
'/a/login' : 'login', // "a" for "application"
'/a/about' : 'about',
'/a/create' : 'create',
'/a/*actions': 'defaultHandler',
'/:username' : 'getUser'
}
然后你必须确保没有人拥有" a"作为用户名。如果添加更多路径,此方法还可以保护您免受未来冲突的影响。