2014-02-25 1 views
1

Я использую Backbone.js для разработки веб-приложения, и у меня есть сомнения в правильном использовании маршрутизации и Html5 Push State. Вот мой кодBackbone.js И Push State

var HoopRouter = new HoopApp.Router.RequestManager; 
Backbone.history = Backbone.history || new Backbone.History({}); 
Backbone.history.start({ 
    root  : '/web_app', 
    pushState : true 
}); 

И в методе я это делаю:

Backbone.history.navigate('#gameScreen/31', { trigger : true }); 

Это workds правильно, но дает мне URL, как этот https://my_host/web_app/gameScreen/31, но когда я ввожу этот адрес в навигационной панели и нажмите в браузере говорится, что URL-адрес не найден на этом сервере, а ссылки href не работают. Если я проверю pushState на false, он работает хорошо, но Backbone использует маршруты «#», и я хочу использовать маршруты «/». Я не знаю, забыл ли я что-то.

+2

У вас есть страница, соответствующая https: // my_host/web_app/gameScreen/31 или серверный маршрутизатор, который будет обслуживать эту страницу? На основании того, что вы показали нам до сих пор, я не вижу определенных маршрутов на стороне клиента, поэтому, если ответ на предыдущий вопрос не будет да, я бы не ожидал, что это сработает. – kinakuta

+0

На данный момент это является моим определенным на сторону клиента маршруты { \t \t \t "": "Индекс", \t \t \t "gameScreen /: GameID": "html5game", \t \t \t ": любой": «NotFound " \t \t} – Flip120

+0

Ваш сервер также захочет попробовать выполнить этот маршрут, поэтому вам нужно будет явно игнорировать маршрут, если вы хотите только маршрутизацию на стороне клиента. Один типичный способ справиться с этим состоит в том, чтобы он обрабатывал базовый маршрут и отрезал что-либо после этого в URL-адресе, поэтому он обрабатывает все маршруты из этого базового URL-адреса одинаково. – kinakuta

ответ