我有一个创建路线的ember-cli插件。在插件中,我公开了一个应该由使用插件的应用程序调用的configureRouter
函数。在应用程序的router.js
中,在map()
回调中,我致电configureRouter
,传递this
。这很好,没问题。
现在,在我的应用程序(不是插件)中,我需要为插件创建的其中一个路由添加一个子路由。例如,插件configureRouter
函数执行如下操作:
configureRouter(router) {
router.route('a', function() {
this.route('b');
});
}
这样就可以配置路由a.b
。现在,回到主应用程序中,我需要添加路由a.b.c
。
这可行吗?
答案 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
方法有任何好处。虽然它要求您的用户在升级时可以修改其路由器,但它也更加明确。