Backbone.js 路由器匹配可选参数

2024-01-03

我正在尝试创建一个可以匹配可选参数的主干路由器。

考虑以下代码:

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(使用前将#替换为@)

Backbone.js 路由器匹配可选参数 的相关文章

随机推荐