Mój błąd polegał na założeniu, że istnieje specjalny, wbudowany sposób robienia tego w kręgosłupie. Nie ma.
prostu uruchamiając następującą linię kodu
window.history.pushState('object or string', 'Title', '/new-url');
spowoduje URL w przeglądarce zmianie bez przeładowania strony. W tej chwili możesz otworzyć konsolę javascript w swojej przeglądarce i wypróbować ją na tej stronie. This article wyjaśnia, jak to działa bardziej szczegółowo (jak odnotowano w this SO post).
Teraz mam tylko związany następujące zdarzenie do obiektu dokumentu (Biegnę pojedyncze miejsce strony):
bindEvents:() ->
$(document).on('click', 'a', @pushstateClick)
pushstateClick: (e) ->
href = e.target.href || $(e.target).parents('a')[0].href
if MyApp.isOutsideLink(href) == false
if e.metaKey
#don't do anything if the user is holding down ctrl or cmd;
#let the link open up in a new tab
else
e.preventDefault()
window.history.pushState('', '', href);
Backbone.history.checkUrl()
Zobacz this post aby uzyskać więcej informacji.
Pamiętaj, że możesz przekazać opcję pushstate: true
do swojego wywołania funkcji Backbone.history.start(), ale powoduje to, że nawigacja bezpośrednio do określonej strony (np. Example.com/exampleuser/followers) spowoduje uruchomienie szkieletu trasy, a nie prowadzący do nikąd.
Możesz również wywołać 'window.location = '/ # /' + page_uri;', aby uruchomić trasę szkieletu. –
@Sven Tutaj jednak moja troska działa z rzeczywistymi trasami - tj. Routing bez '#' –
'Backbone.Router's ma metodę' 'navigate' (http://backbonejs.org/#Router-navigate) od wersji 0.9.0. –