7

有没有办法在 Backbone.js 应用程序中组合散列非散列URL?

我设置Backbone.history.start({pushState: true})。当用户单击某个链接时,我从服务器获取 JSON 数据,更新页面,并调用Backbone.history.navigate以更改浏览器中的 URL(例如 fromexample.com/zlinsky/kampan/mf/example.com/moravskoslezsky/kampan/mf/)。
如果用户从浏览器复制 URL 并在第二个选项卡中打开,他将看到相同的页面(因此以这种方式更新的每个页面在服务器上都有相应的页面)。这正是我想要的。

但是现在我有问题...

<select>的页面上也有几个。当用户更改其中的值时,我会在页面上进行一些动态更改(无需从服务器获取 JSON,仅在客户端进行更新)。我想根据 更改 URL <select>,例如更改为example.com/moravskoslezsky/kampan/mf/#state1(因此,当有人发送此 URL 时,对方将看到与发件人处于相同状态的相同页面)。

我找不到方法,如何在 Backbone.js 中做到这一点。如果我设置pushState: trueon Backbone.historyRouter忽略哈希标签。
如果我设置pushState: false,我将无法像我在上面第一段中描述的那样设置 URL。

谢谢你的任何提示。

4

1 回答 1

2

您可以致电: Backbone.history.navigate( "/foo/bar#fragment" )

但我认为这不是一个好主意,因为 ie 不支持 pushstate,所以骨干网将使用 hash bang url(在 ie 中)。

也许您可以使用查询字符串:Backbone.history.navigate( "/foo/bar?foo=bar", true )它将在现代浏览器中:http://domain.tld/foo/bar?foo=bar以及在 ie:http://domain.tld#/foo/bar?foo=bar

于 2012-02-02T21:17:28.610 回答