如何Backbonejs嵌套路由或子路由

时间:2013-12-19 16:53:19

标签: javascript backbone.js

我希望能够嵌套路由,但我似乎无法找到使用骨干路由器的方法。理想情况下,我想要像:

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

我希望#/ campaigns / 45触发showCampaign,但是从那里导航到说#/ campaigns / 45 / article / 3只会触发jumpToArticle。 Backbone或支持库中有什么支持这个吗?

1 个答案:

答案 0 :(得分:1)

Backbone.Router始终触发单个匹配路由。据我所知,只有Ember.js会触发串联的嵌套路由。

作为Backbone解决方案,Backbone.RouteManager可能会帮助您实现类似的功能(使用过滤器而不是触发嵌套路由)。

但如果您真的在寻找与Ember相同的东西,那么只需使用他们的独立路由器模块代替Backbone.Router。 https://github.com/tildeio/router.js