【发布时间】:2012-03-27 18:55:48
【问题描述】:
我正在尝试创建一个可以匹配可选参数的骨干路由器。
考虑以下代码:
routes: {
'/jobs' : 'jobs',
'/jobs/p:page' : 'jobs',
'/jobs/job/:job_id' : 'jobs',
'/jobs/p:page/job/:job_id' : 'jobs'
}
jobs: function(page, job_id){
// do stuff here ....
}
如果我导航到 URL abc.com/#/jobs/p104/,page 参数将为 104。但是,如果导航到 abc.com/#/jobs/job/93,job_id 参数为 undefined,但 page 参数为 93。
所以 Backbone 的路由器基本上是按顺序而不是按名称匹配路由哈希参数。
我知道解决方案是使用 *splat 并使用正则表达式拆分参数,但我似乎无法让正则表达式部分工作(我的正则表达式非常生锈)。有人可以帮忙吗?
如果有比使用 *splat 更好的解决方案,有人可以分享吗?
【问题讨论】:
-
Backbone 0.9.9 具有使用 () 的可选参数。例如 /jobs(/p:page)(/job/:job_id)
-
@opengrid - 知道如何在路由处理函数中处理可选参数吗?
-
@mikeyUX 你是什么意思?将它们的名称添加为函数参数应该可以解决问题
标签: javascript regex backbone.js routes