2013-02-08 117 views
0

我已经定义了骨干路由器:骨干路由器奇怪的行为

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

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

我的HTML有一个像/m/123链接。当我点击这个链接骨干不会触发openMovie函数 - 浏览器打开新页面。为什么骨干在这种情况下使用历史api?我怎样才能解决它与骨干或木偶?

回答

0

我发现similar question与正确答案。可能是我不擅长描述我的问题。
感谢您的帮助

2

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

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

默认行为是听使用URL #fragmentshashchange事件,所以如果你不想使用pushState的,定义你的哈希URL链接:

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

是的,我使用'pushState:true'。当我点击链接整个页面刷新...我只需要'openMovie'被触发 – 2013-02-11 08:07:50

+0

@ fedor.belov,古怪。抱歉说,那我不知道可能是什么问题。在调用'Backbone.history.start'之前是否初始化路由器? – jevakallio 2013-02-11 08:12:00

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


>