2013-02-08 140 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 }); 
    } 


>