2013-12-19 63 views
0

我想能夠嵌套路由,但我似乎無法找到一種方式來做到這一點與骨幹路由器。理想的情況是我想要的東西,如:如何Backbonejs嵌套路由或子路由

var AppRouter = Backbone.Router.extend({ 
    routes: { 
    "campaigns/:campaignId": "showCampaign", 
    "campaigns/:campaignId/article/:articleId": "jumpToArticle" 
    }, 

    showCampaign: function(campaignId){ 
    // setup Campaign state, render some content or something 
    }, 

    jumpToArticle: function(articleId) { 
    // scroll to article 
    } 
}); 

我期望#/活動/ 45觸發showCampaign,但是從那裏導航說#/活動/ 45 /條/ 3只觸發jumpToArticle。 Backbone或支持庫中是否有支持此功能的內容?

回答

1

Backbone.Router總是觸發單個匹配路線。據我所知,只有Ember.js系列觸發嵌套路由。

作爲Backbone解決方案,Backbone.RouteManager可能會幫助您實現類似的功能(使用過濾器而不是觸發的嵌套路由)。

但是如果你真的在尋找與Ember相同的東西,那麼只需使用他們的獨立路由器模塊來代替Backbone.Router即可。 https://github.com/tildeio/router.js

+0

我開始設置tildeio的路由器,但它不僅僅是一個簡單的替代品。由於其他原因,這個要求被降低了,我最終只使用了Backbone的路由器。 –

+0

哦,當然不是,它不是一個簡單的替代品。但它是獨立的,所以你可以完全忽略'Backbone.router'並改用它們的模塊。 –