8

I want to have bookmarkable URLs that the browser can capture and handle. If I just use Backbone.history.start(), then I can use hash URLs, like /#accounts.

But I want URLs without the hashes, a la /accounts. But I can't get this to work using Backbone.history.start( { pushState: true } ) (as others have described it). My routes are straightforward, and taken directly from the documentation.


    MyRouter = Backbone.Router.extend({
        routes: {
            '/accounts': 'accounts',
        }
    });

I'm using Chrome (also tried with FF), and the behaviour is that an /accounts request goes straight to the server. Not being intercepted by Backbone first. Has anyone run into this? How do I get hash-less URL handling with Backbone?

Thanks in advance

Community
  • 1
  • 1
Nutritioustim
  • 2,686
  • 4
  • 32
  • 57
  • 1
    The # is used for internal linking in html, all urls without # will go to server. You can still add routes, but all links with out # will go by server first –  Nov 26 '11 at 17:50

1 Answers1

17

You would navigate to that url with js using router.navigate( "/accounts", true ), not by links or entering the url yourself. To use links, you must bind a click event to them and prevent the default action and call navigate to the links href.

router is an instance of Router

Esailija
  • 138,174
  • 23
  • 272
  • 326