javascript – Backbone.js PushState True

我已经在骨干网中创建了一个网站,由于各种原因,我决定要删除网址中的哈希值.我改变了历史.开始了

Backbone.history.start(); 

Backbone.history.start({pushState: true, root: '/'});

但是一旦我这样做,路由就会停止正常工作.

我的路由看起来像这样:

var Router = Backbone.Router.extend({
  routes: {
    "": "home",
    "home": "home",
    "artists": "artists",
  }
});

var router = new Router;
router.on('route:home', function() {
  console.log("home");
  // Code
});

router.on('route:artists', function() {
  console.log("artists");
  // Code
});

//Backbone.history.start();
Backbone.history.start({
  pushState: true,
  root: '/'
});

如果我在没有pushState的情况下运行它,它运行正常,如果我用pushState运行它,它不会到达console.log(“艺术家”);部分,我不明白为什么,有人可以向我解释我做错了什么?

解决方法:

您需要阻止元素继续其常规操作并让骨干路由器对其进行路由.

我将使用jQuery编写示例来概述应该发生的事情:

$(document).on("click", "a", function(e)
{
    e.preventDefault(); // This is important

    var href = $(e.currentTarget).attr('href');

    router.navigate(href, true); // <- this part will pass the path to your router

});
上一篇:javascript-HTML5历史记录教程


下一篇:history.pushState 使用