Backbone 带有任意文本的路由
Backbone routing with arbitrary text
我有一个页面从外部重定向到 backbone 代码库。它有两个参数:
- ID:整数
- CODE:一个随机的可打印 ascii 字符串(没有
#
或 &
或 ?
,但可以包含 -
并且始终包含 /
)
不确定 CODE
参数是否已编码。如果需要,我想我可以让他们控制它。但目前的问题只是匹配。
我是一名维护程序员,最初不是我的应用程序,所以只是想编写 "fits".
的代码
大多数现有路由只采用一个 ID。例如
"account-edit-:accountId" : "accountEditRoute"
但是我如何将我的两个参数传递到我的流程路线。我试过:
"process-:id-:code" : "processCode"
"process-[^-]*-:code" : "processCode"
"process-:id/:code" : "processCode"
"process-:id/*" : "processCode"
我的代码处理程序是这样的:
processCode: function(id, code) {
...
}
我总是收到未知的路由处理程序。那我怎么匹配上面的呢
抱歉,如果这是一个愚蠢的问题 - 但他们(明智地)通常不会让我靠近前端,所以这对我来说都是新的。
我相信您必须使用带正则表达式的 Router-route
选项来完成。路由哈希只能匹配简单的模式。
Manually create a route for the router, The route argument may be a routing string or regular expression. Each matching capture from the route or regular expression will be passed as an argument to the callback.
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) { ... }
我有一个页面从外部重定向到 backbone 代码库。它有两个参数:
- ID:整数
- CODE:一个随机的可打印 ascii 字符串(没有
#
或&
或?
,但可以包含-
并且始终包含/
)
不确定 CODE
参数是否已编码。如果需要,我想我可以让他们控制它。但目前的问题只是匹配。
我是一名维护程序员,最初不是我的应用程序,所以只是想编写 "fits".
的代码大多数现有路由只采用一个 ID。例如
"account-edit-:accountId" : "accountEditRoute"
但是我如何将我的两个参数传递到我的流程路线。我试过:
"process-:id-:code" : "processCode"
"process-[^-]*-:code" : "processCode"
"process-:id/:code" : "processCode"
"process-:id/*" : "processCode"
我的代码处理程序是这样的:
processCode: function(id, code) {
...
}
我总是收到未知的路由处理程序。那我怎么匹配上面的呢
抱歉,如果这是一个愚蠢的问题 - 但他们(明智地)通常不会让我靠近前端,所以这对我来说都是新的。
我相信您必须使用带正则表达式的 Router-route
选项来完成。路由哈希只能匹配简单的模式。
Manually create a route for the router, The route argument may be a routing string or regular expression. Each matching capture from the route or regular expression will be passed as an argument to the callback.
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) { ... }