2013-01-01 108 views
0

我有一個Backbone.Router類的設置,一切正常。但是,有一點(可能有點阻塞)不便。使用骨幹路由器導航

爲了使用的骨幹路由器,導航,我使用下面的代碼

myrouter.navigate('/search_term/2/filter1+filter2/'); 

這工作,因爲它應該。但是,URL的不同參數不會在相同的位置更新。例如,用戶可能會移動到下一頁(3),搜索詞和過濾器不應該更新。

我希望能夠做的就是這樣的事情

myrouter.navigate(':route_id', ':route_value'); 

例如,我可以做

myrouter.navigate(':query', 'search_term'); 
myrouter.navigate(':pagination', '5'); 

骨幹能做到這一點?如果不是,有什麼可能的解決方案

回答

0

我最終自己修復了這個問題。

解決方案是通過綁定到更改事件以類似於提交請求時所做的方式來偵聽模型的更改。

0

你可以實現一個函數你自己的擴展骨幹路線,以你想要的方式工作。

如果您讀取路由源代碼,您將會看到它們只將模式轉換爲正則表達式模式,非常簡單,然後將方法目標與正則表達式匹配的參數應用。

所以,如果你想有一個反方向的路徑導航或類似的東西,你可以申請你的自我延伸Backbone.Route

事情是這樣的:

myrouter = Backbone.Router.extends({ 
    navigate: function(a, b) { 
     // Do something with my args here 
     var result = doSomething(a, b); 

     // Then execute backbone's official navigate with the results 
     Backbone.Router.navigate.apply(this, result); 
    } 
}); 

創建功能doSomething工作是你如何需要反向創建你的路線。

但是,沒有一個骨幹原生的方式來做到這一點,路由器不會mutch高級功能。

+0

不知道我是否理解正確。如果用戶導航到「/ search_term/pagination /」。爲什麼我需要再次導航到這個頁面,這有什麼幫助? –