2013-02-25 2 views
1

Возможно ли переписать историю браузера без использования history.pushState?Backbone - Overwrite Hashchange History

У меня есть магистральное приложение с маршрутизатором, который выглядит примерно так:

routes: { 
    'posts': 'posts', 
    'modal': 'modal' 
}, 

'before': function (args) { 
    //check if logged in 
     //do some various other setup tasks 
    //maybe delete modal routes from the history? 

    //forward to route 
    args.next() 
}, 

'posts': function() { 
    //make and show posts 
}, 

'modal': function (params) { 
    //edit user email preferences OR 
    //create a new post OR 
    //do various other crud operations 
} 

Anytime модальный маршрут запускаемый Я хотел бы, чтобы предотвратить хэш от записываются в истории состояния браузера. Причина в том, что пользователи не должны снова открывать модальный при движении назад в истории.

Я просмотрел исходный код базовой линии, и я не вижу ничего, что просто говорит history = [].

Есть ли способ сделать это без состояния нажатия?

ответ

0

Вы пытались установить для параметра replace значение true для функции router.navigate (фрагмент, [опции])?

Это, как предполагается обновить URL без создания записи в истории браузера

http://backbonejs.org/#Router-navigate

Если вы обработки события кнопки щелчка, которые должны быть ручки в целях и не в маршрутизаторе класс.

Exemple:

class MyView extends Backbone.View 

    events : 

     'click #backButton' : 'onClick' 


    initialize : -> 

      #Some Stuff 


    render: -> 

      #Some Stuff 


    onClick: (e) -> 

      router.navigate '/projects', {replace : true } 
+0

хорошо, я уверен, что будет работать, но это не метод навигации вызывается только при ручном запуске маршрута? В моем приложении много экземпляров, где я не смогу это сделать (ссылки, которые являются общими, поступают через электронную почту или другие приложения.) –

+0

Как я могу назвать эту функцию при нажатии кнопки «Назад»? –

+0

Я только что обновил свой ответ, добавив пример и пример класса, и событие onclick на кнопке «#myButton» – socrateisabot