使用任意文本的 Backbone 路由

pw9qyyiw  于 2022-11-10  发布在  其他
关注(0)|答案(1)|浏览(152)

我有一个页面被从外部重定向到 Backbone.js 代码库。它有两个参数:

  • ID:整数
  • CODE:随机可打印的ASCII字符串(不包含#&?,但可以包含-,并且始终包含/

不确定CODE参数是否是%编码的。如果需要的话,我想我可以让他们控制它。但是目前的问题只是匹配。
我是一个维护程序员,而不是我的应用程序原来,所以只是试图使代码“适合”。
大多数现有的路由只采用一个ID。

"account-edit-:accountId"    : "accountEditRoute"

但是我如何将我的两个参数传递到我的工艺路线中呢?我已经尝试过了:

"process-:id-:code"    : "processCode"
"process-[^-]*-:code"  : "processCode"
"process-:id/:code"    : "processCode"
"process-:id/*"        : "processCode"

我的代码处理程序是这样的:

processCode: function(id, code) {
...
}

我总是得到未知的路由处理程序。那么我怎么才能匹配上面的呢?
抱歉,如果这是一个愚蠢的问题-但他们(明智的)通常不让我接近前端,所以所有对我来说都很新。

ru9i0ody

ru9i0ody1#

我相信你必须使用带有regexp的Router-route选项来做这件事。路由哈希只能匹配简单的模式。
手动为路由器创建路由。路由参数可以是路由字符串或正则表达式。来自路由或正则表达式的每个匹配捕获都将作为参数传递给回调。

initialize: function(options) {

 // Matches #page/10, passing "10"
  this.route("page/:number", "page", function(number){ ... });

 // Matches /117-a/b/c/open, passing "117-a/b/c" to this.open
 this.route(/^(.*?)\/open$/, "open");

},

open: function(id) { ... }

相关问题