Sodved
Sodved

Reputation: 8607

Backbone routing with arbitrary text

I have a page being redirected to from external to the backbone codebase. It has two parameters:

Not sure if CODE param is %encoded or not. Think I can get them to control that if required. But issue at the moment is just matching.

I am a maintenance programmer, not my app originally, so just trying to make code that "fits".

Most of the existing routes just take a single ID. e.g.

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

But how do I pass my two params in to my process route. I have tried:

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

And my code handler is like:

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

I am always getting the unknown route handler. So how can I match the above.

Sorry if this is a dumb question - but they (wisely) don't normally let me near the front end, so all very new to me.

Upvotes: 0

Views: 31

Answers (1)

T J
T J

Reputation: 43166

I believe you have to do it using the Router-route option with a regexp. The routes hash can only match simple patterns.

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) { ... }

Upvotes: 1

Related Questions