【问题标题】:How to get url parameters in Backbone?如何在 Backbone 中获取 url 参数?
【发布时间】:2017-07-01 08:46:50
【问题描述】:

我正在将 Backbone 与 Marionette 一起使用。

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

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

地址栏网址:

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

使用 Php,这很简单:

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

如何在我的 Backbone 应用中实现它?

【问题讨论】:

标签: javascript backbone.js query-string backbone-routing


【解决方案1】:

如果路由是这样定义的:

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

然后您可以在 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 docs

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


注意顺序很重要,下面的 url 不会触发路由回调。注意 emailage 参数位置。

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

为了触发路由而不考虑参数的数量和顺序,看看如何在路由函数中parse the query string,但这并不总是有效。

【讨论】:

  • 请注意,使用此路由,参数顺序很重要,没有一个是可选的。可以使用括号 help/?(name=:name)(&amp;age=:age) 将它们设为可选,但不同的排序不会触发路由。
  • 括号应该在路由字符串中,而不是在 URL 中。我的意思是像 help/?name=test&amp;email=test%40example.com&amp;age=6 这样的 URL 会失败,即使它是一个有效的 URL,因为查询字符串参数顺序与设计无关。
猜你喜欢
  • 2015-04-01
  • 2017-09-30
  • 2020-12-22
  • 2016-02-03
  • 2020-05-02
  • 2016-03-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多