Mein Fehler ging davon aus, dass es eine spezielle, eingebaute Möglichkeit gab, dies im Backbone zu tun. Es ist nicht.
einfach läuft die folgende Codezeile
window.history.pushState('object or string', 'Title', '/new-url');
verursacht URL Ihres Browsers ohne Neuladen der Seite zu ändern. Sie können jetzt die Javascript-Konsole in Ihrem Browser öffnen und es mit dieser Seite versuchen. This article erklärt, wie es genauer funktioniert (wie in this SO post notiert).
Jetzt habe ich gebunden gerade das folgende Ereignis auf das Dokumentobjekt (Ich bin eine einzelne Seite Website läuft):
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()
Siehe für weitere Informationen this post.
Beachten Sie, dass Sie die Option pushstate: true
an Ihren Aufruf von Backbone.history.start() weitergeben können, dies jedoch lediglich dafür sorgt, dass das Navigieren direkt zu einer bestimmten Seite (z. B. example.com/exampleuser/followers) ausgelöst wird Backbone-Route statt einfach ins Nirgendwo führen.
Sie können auch 'window.location = '/ # /' + page_uri;' aufrufen, um die Route des Backbones auszulösen. –
@Sven Hier ist meine Sorge mit tatsächlichen Routen arbeiten - dh Routing ohne die # # –
'Backbone.Router' s haben eine ['navigate' Methode] (http://backbonejs.org/#Router-navigate) seit Version 0.9.0. –