How to get url parameters in Backbone?

6.7k views Asked by At

I'm using Backbone with Marionette.

I have a link <a> tag where I'm passing few parameters, how can I extract those values in other pages using Backbone?

<a href="http://localhost.com:8080/help/?name=matth&age=25&[email protected]">View Details</a>

Address Bar url:

http://localhost.com:8080/help/?name=matth&age=25&[email protected] 44

Using Php, this is straightforward:

$Url = $_GET['state']."#".$_GET['city']; 

How can I achieve it within my Backbone app?

1

There are 1 answers

2
Ryad Boubaker On BEST ANSWER

If the route is defined with something like this:

'help/:name&:age&:email' : 'help'

Then you can access those params in the help function just by defining them in the signature of the method (within the backbone router),

help: function(name, age, email) {
    // do whatever you want with the params
}

In your case, this will give you params like this:

name="XXX" age="XXX"

So the proper routing would be

'help/?(name=:name)(&age=:age)(&email=:email)' : 'help'

Where parentheses make a part optional.

Backbone docs

Routes can contain parameter parts, :param


Note that the order is important and the following url wouldn't trigger the route callback. Notice the email and age params placement.

help/?name=test&email=test%40example.com&age=6

In order to trigger a route regardless of the number of params and their ordering, take a look at how to parse the query string in the route function, but that won't always work.