如何在Backbone中获取URL参数?

4

我正在使用Backbone与Marionette。

我有一个链接<a>标签,其中我传递了一些参数,如何在其他页面中使用Backbone提取这些值?

<a href="http://localhost.com:8080/help/?name=matth&age=25&email=matt@gmail.com">View Details</a>

地址栏URL:

http://localhost.com:8080/help/?name=matth&age=25&email=matt@gmail.com 44

使用Php,这很简单:
$Url = $_GET['state']."#".$_GET['city']; 

怎么在我的Backbone应用程序中实现它?

可能是使用查询字符串导航路由的重复问题。 - Emile Bergeron
1个回答

5
如果路由定义如下:

```

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

然后你可以在backbone路由器内定义方法签名中的参数,以便在help函数中访问这些参数。

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

在你的情况下,这将为你提供以下参数:
name="XXX" age="XXX"

因此,正确的路由方式应该是:
'help/?(name=:name)(&age=:age)(&email=:email)' : 'help'

括号表示其中部分为可选项。

Backbone文档

路径可以包含参数部分,如:param


请注意顺序的重要性,以下URL不会触发路由回调。请注意emailage参数的位置。

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

为了触发路由并不考虑参数的数量和顺序,请查看如何在路由函数中解析查询字符串,但这种方法并不总是管用。请参考此处

1
请注意,使用此路由时,参数顺序很重要,且没有可选项。可以使用括号help/?(name=:name)(&age=:age)使其变为可选项,但不同的顺序将不会触发该路由。 - Emile Bergeron
括号应该在路由字符串中,而不是在URL中。我的意思是,即使查询字符串参数的顺序是无关紧要的设计,像help/?name=test&email=test%40example.com&age=6这样的URL也会失败。 - Emile Bergeron

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接