Рендеринг представления магистрали при обновлении

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

вот роутер:

var MainRouter = Backbone.Router.extend({
    initialize: function() {
//        homeView.render();
    },
    routes: {
        '': 'index', 
        'register': 'register'
    }
});

var mainRouter = new MainRouter();

router.on('route:index', function() {
    if (htmlObj.hasClass('connected')) {
        if (htmlObj.hasClass('present')) {
            profileView.render();
        }
        homeView.render();
    }
});

router.on('route:register', function() {
    signUpView.render();
});

Backbone.history.start();

а затем в событиях просмотра я установил trigger на true

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

Таким образом, он будет выполнять функцию этого конкретного маршрута. Я также пытался использовать pushState and root, но у него та же проблема при обновлении, но на этот раз он говорит, что страница не найдена.

Спасибо


person OneScrewLoose    schedule 18.09.2014    source источник


Ответы (1)


Пожалуйста, попробуйте этот код:

var MainRouter  = Backbone.Router.extend({
    routes: {
        "": "index",
        "register": "register",
    },
    index: function () {
        if (htmlObj.hasClass('connected')) {
            if (htmlObj.hasClass('present')) {
                profileView.render();
            }
            homeView.render();
        }
    },

    register: function() {
        signUpView.render();
    }

});

$(document).ready(function () {
    var r = new MainRouter();
    Backbone.history.start();
    r.navigate(window.location.hash.replace('#',''),{trigger: true});
})
person aleha    schedule 18.09.2014
comment
Я уже пытался реализовать это, но это не решает проблему - person OneScrewLoose; 19.09.2014
comment
попробуйте добавить вызов navigate. В обычных случаях он запускает указанный маршрут дважды. Попробуйте установить несколько точек останова для отладки кода. Проверьте, какая функция срабатывает при запуске. Может быть, есть html-разметка для рендеринга. - person aleha; 19.09.2014