如何为URL生成设置路由器基本URL

时间:2017-03-22 14:32:59

标签: aurelia base-url aurelia-router

我正在使用pushState进行路由,而我的页面则来自www.mydomain.com/thepage。适当的路线看起来像www.mydomain.com/thepage/homewww.mydomain.com/thepage/user/{userId}等。

因此,我已将base标记设置在索引文件中,路由器config.options.root设置为/thepage

一切都按预期工作(路由,路由器视图的生成链接等)。

仅从代码或templating router动态生成新路由网址不符合我的基本网址:

在视图中使用模板路由器

<template>
    <!-- ... -->
    <a route-href="route: user; params.bind: { userId: user.id }">
    <!-- ... -->
</template>

从代码手动生成路线

let url = router.generate('user', { userId: id });

这两种方法都会导致错误的网址www.mydomain.com/user/12,其中缺少基本网址thepage/

通过调试router.generate方法,我发现路由器有一个单独的baseUrl属性,在设置时产生正确的输出:

configureRouter(config: RouterConfiguration, router: Router): void {
    // ...
    router.baseUrl = '/thepage'; // <-- Manually set baseUrl
    config.options.root = '/thepage';
    config.map([
        // The routes...
    ]);
    // ...
}

我非常感谢您对以下问题有所了解:

  1. 为什么在已经有baseUrl配置选项的情况下,我必须首先设置root属性?有什么区别?

  2. 为什么我必须在路由器上设置它,而其他配置通常在Aurelia的config对象上执行?

  3. 这种方法有效吗?我不太确定我是否应该这样做,因为文档的Articles & Guides部分中没有提到baseUrl,但仅在Library API中仅提及WololoThe [[Router]]'s current base URL, typically based on the [[Router.currentInstruction]].描述。

0 个答案:

没有答案