Использование Backbone.js для обработки истории браузера

Я пытаюсь использовать Backbone.js для обработки истории браузера. Я не настраиваю Views/Models, потому что не хочу, чтобы он справлялся с этим, и, вероятно, из-за этого я не заставляю его работать должным образом.

На данный момент моя страница меняет URL. Нравится:

domain.com/services
domain.com/products
domain.com/contact
domain.com/gallery
domain.com/gallery/photo1

Проблема в том, что если я попытаюсь перезагрузить страницу по адресу domain.com/gallery/photo1. Я получаю сообщение об ошибке Uncaught SyntaxError: Unexpected token ‹

Все остальные страницы с постоянной ссылкой только одного уровня работают корректно при перезагрузке. Я что-то упустил в Backbone?

Я просто использую Backbone.Router и Backbone.history.

Есть ли какое-нибудь простое руководство по настройке сайта с помощью backbone.js? Просто история?

Вот мой сценарий:

var Router;
var myRouter;

$(document).ready(function(){
    Router = Backbone.Router.extend({
        initialize : function(options) {
            //
        },
        routes: {
            '' : 'home',
            '*actions' : 'pages'
        },
        home : function() {
            this.render('/');
        },
        pages : function(actions) {
            this.render(actions);
        },
        render : function(path) {
            var fullLine = '';
            path = (path === '/' || path === '')? '/' : path;
            console.log('path: ' + path);
        }
    });

    myRouter = new Router();

    Backbone.emulateHTTP = true;
    Backbone.emulateJSON = true;
    Backbone.history.start({pushState: true, root: "/backbone_teste/"});

    // MENU CLICK
    $('.menu').children('li').each(function(){
        $(this).click(function(){
            myRouter.navigate($(this).attr('data-id'), true, true);
        });
    });
});

Спасибо за вашу помощь!


person Angelo Silva    schedule 23.07.2012    source источник
comment
Uncaught SyntaxError: Unexpected token ‹ предполагает, что кто-то пытается интерпретировать HTML как JSON. Можете ли вы показать нам код?   -  person mu is too short    schedule 24.07.2012
comment
Сообщение отредактировано. Я просто добавил эти параметры для эмуляцииHTTP и эмуляцииJSON, чтобы посмотреть, решит ли это проблему. Я пока ничего не загружаю. Если я изменю pushState на false и попытаюсь получить доступ к domain.com/#gallery/photo1, это сработает, но мне не нужен хэш! Спасибо   -  person Angelo Silva    schedule 24.07.2012
comment
Я запускаю этот пример на localhost/backbone_teste, и у меня есть файл .htaccess для mod_rewrite. Возможно, это как-то связано с моей проблемой.   -  person Angelo Silva    schedule 24.07.2012


Ответы (1)


Проблема решена:

Я только что добавил в свой файл index.php следующий код в разделе заголовка:

<base href="http://localhost/backbone_teste/" />

И это работает.

В любом случае, я хотел бы знать, почему это происходит и почему документация Backbone.js не упоминает об этом.

Я нашел решение по этой ссылке: История HTML5 / URL-адреса pushState, .htaccess и вы

Спасибо

person Angelo Silva    schedule 24.07.2012