我正在尝试创建一个可以匹配可选参数的主干路由器。
考虑以下代码:
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/#/工作/p104/ the page参数将是104。但是,如果导航到 abc.com/#/工作/工作/93, the job_id参数是不明确的但是page参数是93.
所以 Backbone 的路由器基本上是按顺序而不是按名称来匹配路由哈希参数。
我知道解决方案是使用 *splat 并用正则表达式分割参数,但我似乎无法让正则表达式部分工作(我的正则表达式非常生锈)。有人可以帮忙吗?
如果有比使用 *splat 更好的解决方案,有人可以分享吗?
与其搞乱正则表达式,不如使用第二个函数会更容易且更不容易出错。您可能必须在初始化函数中绑定所有 this 才能使 this.jobs 工作。
routes: {
'/jobs' : 'jobs',
'/jobs/p:page' : 'jobs',
'/jobs/job/:job_id' : 'jobsId',
'/jobs/p:page/job/:job_id' : 'jobs'
},
jobs: function(page, job_id){
// do stuff here ....
},
jobsId: function(page, job_id){
this.jobs(undefined, job_id
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)