骨干路由器奇怪的行为

时间:2013-02-08 13:38:48

标签: backbone.js routing marionette

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

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

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

我的html包含/m/123之类的链接。当我点击此链接时,骨干网不会触发openMovie功能 - 浏览器会打开新页面。为什么骨干在这种情况下不使用历史api?我怎样才能用骨干或牵线木偶来修复它?

3 个答案:

答案 0 :(得分:2)

Backbone pushState支持是选择加入。当您初始化所有路由器时,call

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

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

<a href="#/m/123"></a> 

答案 1 :(得分:0)

如果您想要兼容版本:

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 });
     }


> 

答案 2 :(得分:0)

我找到了similar question正确答案。可能是我不善于描述我的问题 谢谢你的帮助