【发布时间】:2012-02-21 18:18:45
【问题描述】:
有没有办法在 Backbone.js 应用程序中结合 hash 和 non-hash 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>更改网址,例如更改为example.com/moravskoslezsky/kampan/mf/#state1(因此,当有人发送此网址时,对方会看到与发件人处于相同状态的同一页面)。
我找不到方法,如何在 Backbone.js 中做到这一点。如果我在Backbone.history 上设置pushState: true,Router 忽略哈希标签。
如果我设置pushState: false,我将无法像上面第一段中描述的那样设置 URL。
感谢您的任何提示。
【问题讨论】:
-
你能解决这个问题吗?我面临着完全相同的问题。当 pushState 为真时,我无法路由包含哈希部分的 url; hash 完全被忽略了。
标签: javascript backbone.js shebang