0

我已经定义了骨干路由器:

MyApp.router = new (Backbone.Marionette.Router.extend({
  routes: {
    "/m/:id": "openMovie",
    "m/:id": "openMovie"
  },

  openMovie: function(id) {...}
});

我的 html 有类似的链接/m/123。当我单击此链接时,主干不会触发openMovie功能 - 浏览器会打开新页面。在这种情况下,为什么骨干网不使用历史 API?如何用骨干或木偶修复它?

4

2 回答 2

2

骨干pushState支持是可选的。初始化所有路由器后,调用

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

默认行为是hashchange使用 url 监听事件#fragments,因此如果您不想使用 pushState,请使用哈希 url 定义链接:

<a href="#/m/123"></a> 
于 2013-02-08T13:43:57.543 回答
1

如果你想要兼容的版本:

if (!Backbone.History.started) {

       // Enable pushState for compatible browsers
       var enablePushState = true;  

       // Disable for older browsers
       var pushState = !!(enablePushState && window.history && window.history.pushState);

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


> 
于 2013-02-09T11:21:39.100 回答