Ember.js:将子路由添加到现有路由

时间:2018-03-09 21:24:27

标签: ember.js

我有一个创建路线的ember-cli插件。在插件中,我公开了一个应该由使用插件的应用程序调用的configureRouter函数。在应用程序的router.js中,在map()回调中,我致电configureRouter,传递this。这很好,没问题。

现在,在我的应用程序(不是插件)中,我需要为插件创建的其中一个路由添加一个子路由。例如,插件configureRouter函数执行如下操作:

configureRouter(router) {
    router.route('a', function() {
      this.route('b');
    });
}

这样就可以配置路由a.b。现在,回到主应用程序中,我需要添加路由a.b.c

这可行吗?

1 个答案:

答案 0 :(得分:1)

好吧,你可以为此公开另一个回调:

configureRouter(router, cb) {
  router.route('a', function() {
    cb.apply(this, 'a');
    this.route('b', function() {
      cb.apply(this, 'b');
    });
  });
}

然后像这样使用它:

configureRouter(this, function(route) {
  if(route === 'b') {
    this.route('c');
  }
}

然而我不推荐这个!我建议完全放弃configureRouter。当您安装插件时,我会使用蓝图将路由注入路由器(如ember generate route那样)。这允许用户进行他想要的任何类型的定制。

如果你没有暴露出更多的打瞌睡路线,我几乎不怀疑你的configureRouter方法有任何好处。虽然它要求您的用户在升级时可以修改其路由器,但它也更加明确。