在Backbone.js中组合哈希和非哈希URL



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

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

但现在我有问题了。。。

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

我在Backbone.js中找不到方法。如果我在Backbone.history上设置pushState: trueRouter将忽略哈希标记
如果我设置了pushState: false,我就无法像上面第一段中描述的那样设置URL。

谢谢你的提示。

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

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

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

最新更新