Магистральные маршруты без хешей? - PullRequest
47 голосов
/ 05 сентября 2011

Я использую магистраль для текущего проекта.Мне было интересно, можно ли выполнять маршрутизацию без хэшей #, как это делает davis.js.

Спасибо!

Ответы [ 2 ]

64 голосов
/ 05 сентября 2011

Вам необходимо включить pushState

Backbone.history.start({pushState: true})

http://backbonejs.org/#Router

http://backbonejs.org/#History

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

10 голосов
/ 04 декабря 2012

Магистральная опорная плита имеет отличный помощник, который включает pushstate.Я использую его, когда я хочу обойти мой маршрутизатор.

// Trigger the initial route and enable HTML5 History API support, set the
// root folder to '/' by default.  Change in app.js.
Backbone.history.start({ pushState: true, root: app.root });

// All navigation that is relative should be passed through the navigate
// method, to be processed by the router. If the link has a `data-bypass`
// attribute, bypass the delegation completely.
$(document).on("click", "a[href]:not([data-bypass])", function(evt) {
  // Get the absolute anchor href.
  var href = { prop: $(this).prop("href"), attr: $(this).attr("href") };
  // Get the absolute root.
  var root = location.protocol + "//" + location.host + app.root;

  // Ensure the root is part of the anchor href, meaning it's relative.
  if (href.prop.slice(0, root.length) === root) {
    // Stop the default event to ensure the link will not cause a page
    // refresh.
    evt.preventDefault();

    // `Backbone.history.navigate` is sufficient for all Routers and will
    // trigger the correct events. The Router's internal `navigate` method
    // calls this anyways.  The fragment is sliced from the root.
    Backbone.history.navigate(href.attr, true);
  }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...