Aurelia在app.js之前挂钩到路由器

时间:2016-05-26 08:17:31

标签: ecmascript-6 aurelia

所以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()的子视图,但它看起来并不好。

1 个答案:

答案 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方法。这只是为了方便。在这种情况下,使用构造函数可以提供更大的灵活性。