如何在配置Aurelia路由器之前加载数据?

时间:2016-06-06 20:03:02

标签: typescript single-page-application bootstrapping aurelia aurelia-router

在我的应用程序中,我在配置路由器时动态加载一组视图标识符。然后我导航到第一个可用的视图:

@autoinject
export class App {
    router: Router;

    constructor(private viewManager: ViewManager) {
    }

    configureRouter(config: RouterConfiguration, router: Router) {

        this.router = router;

        config.title = 'My Application';
        config.map([
            { route: [''], name: 'start', moduleId: './views/myapp-start', nav: false, title: 'Start' },
            { route: ['otherroute'], name: 'other', moduleId: './views/myapp-other', nav: true, title: 'Other' }
        ]);
        this.loadViews();
    }

    private loadViews() {
        this.viewManager.getViews().done(views => {
            for (let i = 0; i < views.length; i++) {
                this.router.addRoute({ route: `view-${i + 1}`, name: `view-${i + 1}`, moduleId: './views/myapp-dynamic', nav: true, title: views[i], settings: { name: views[i] } });
            }
            this.router.refreshNavigation();
            this.router.navigateToRoute('view-1');
        });
    }
}

只要用户使用不带参数的URL(例如http://www.example.com)调用我的应用程序,此方法就可以正常工作。但是一旦用户开始使用其中一个动态路由(例如http://www.example.com/#/view-1)打开应用程序,应用程序就会失败,因为在打开应用程序时,此路由尚不可用。

如何在应用程序启动期间启动路由器之前确保加载和添加动态路由?

0 个答案:

没有答案