2012-01-29 3 views
7

Есть ли какой-то способ, как объединить хэш и не-хэша адреса в приложении Backbone.js?Объединить хэш и не хэш URL-адреса в Backbone.js

Я установил Backbone.history.start({pushState: true}). Когда пользователь нажимает на какую-либо ссылку, я получаю данные JSON с сервера, страницу обновления и вызываю Backbone.history.navigate для изменения URL-адреса в браузере (например, от example.com/zlinsky/kampan/mf/ до example.com/moravskoslezsky/kampan/mf/).
Если пользователь скопирует URL-адрес из браузера и откроется во второй вкладке, он увидит ту же страницу (поэтому каждая обновленная страница имеет соответствующую страницу на сервере). Это именно то, чего я хочу.

Но теперь у меня есть проблема ...

У меня есть несколько <select> на странице тоже. Когда пользователь меняет в них значение, я делаю некоторые динамические изменения на странице (без извлечения JSON с сервера, обновления выполняются только на стороне клиента). Я хотел бы изменить URL-адреса в соответствии с <select>, например, example.com/moravskoslezsky/kampan/mf/#state1 (так, если кто-то отправит этот URL-адрес, другая сторона увидит ту же страницу, в том же состоянии, что и отправитель).

Я не мог найти способ, как это сделать в Backbone.js. Если я установил pushState: true на Backbone.history, Router игнорировать хэш-теги.
Если я установил pushState: false, я не могу установить URL-адреса, как описано выше в первом абзаце.

Благодарим за любые намеки.

+0

в состоянии решить этот вопрос вы были? я столкнулся с той же проблемой. когда pushState истинно, я не могу использовать URL-адреса маршрута, содержащие хеш-часть; хэш просто полностью игнорируется. – Fedor

ответ

2

Вы можете позвонить: Backbone.history.navigate("/foo/bar#fragment")

Но я не думаю, что это хорошая идея, потому что есть не поддерживает PushState, поэтому позвоночник собирается использовать хэш восклицательным URLs (в IE).

Может быть, вы могли бы использовать querystrings: Backbone.history.navigate("/foo/bar?foo=bar", true), которые будут в современных браузерах: http://domain.tld/foo/bar?foo=bar и в Ie: http://domain.tld#/foo/bar?foo=bar

 Смежные вопросы

  • Нет связанных вопросов^_^