所以aurelia应用程序从main.js
bootstrap(function(aurelia) {
aurelia.use
.standardConfiguration()
.developmentLogging();
aurelia.start().then(() => aurelia.setRoot('app', document.body));
});
源代码告诉我,您可以在router()
上调用FrameworkConfiguration
方法,这是aurelia.use
为您提供的方法。
但是实现没有钩子,只包括framework-templating-router
。
我想要一个钩子的原因是因为我想在activate()
的{{1}}中进行api调用但是,我希望在api调用之前滑入导航管道中间件制成。
app.js
之后调用{p> configureRouter
这是显而易见的。这意味着我可以动态地注入菜单项(api在授权墙后面)来构建我的初始屏幕。如果我得到activate()
它会拒绝我想要的401
承诺 - 但是如果管道步骤可以activate()
,那会更好。
如果我要自定义登录Redirect('login')
,那么我会有两个重定向位置,但它也不适合aurelia设计。
有一种替代解决方案是将路由器配置为activate()
的子视图,但它看起来并不好。
答案 0 :(得分:1)
在你的app.js中,你可以这样做:
import {Router} from 'aurelia-router';
@inject(Router)
export class App {
constructor (router) {
this.router = router;
this.router.configure(config => ...);
}
activate () {
...
}
}
基本上......你不必使用configureRouter
方法。这只是为了方便。在这种情况下,使用构造函数可以提供更大的灵活性。