finethanks
@finethanks
Senior Pomidor Full Stack WEB Developer (SPFSWD)

Почему перестает работать Backbone.Router после использования histoty.pushState?

Добрый день!
На странице есть backbone-роутер следующего вида (сокращенный вариант)
Controller = Backbone.Router.extend({
        routes: {
            "sendpm/:dialogWith": "sendpm" 
        },
        sendpm: function(dialogWith) {
            $("#popup-send-pm").simplePopup();
            if (PM != undefined && typeof PM.init == "function")
                PM.init(dialogWith);

            // Загружаем информацию о пользователе
            PM.getUserInfo();
        }
    });
    controller = new Controller(); 
    Backbone.history.start();

Ссылка вида site.ru/#sendpm/123 откроет диалоговое окно для отправки личного сообщения. При закрытии окна, чтобы избавиться от знака hash (#) делаю следующее
history.pushState('', document.title, window.location.pathname);


Страница не перезагружается, url становится чистым, но повторная попытка вызвать роут через #sendpm не дает результата, роут не срабатывает, в чем может быть причина?
  • Вопрос задан
  • 2573 просмотра
Решения вопроса 1
dpigo
@dpigo
Front-end developer
Сделайте пустой роут и используйте бекбоновский метод navigate для этого роута при закрытии окна.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы