2015-03-24 82 views
6

我在配置Aurelia路由時遇到類似layer1/layer2的路徑而不僅僅是layer1。 這裏(下DIST的文件被自動創建基於文件src文件夾下)Aurelia路由配置問題

dist 
    | - home 
     | - home.html 
     | - home.js 
    | - user 
     | - register.html 
     | - register.js 
    app.html 
    app.js 
    main.js 
src 
    | - home 
     | - home.html 
     | - home.js 
    | - user 
     | - register.html 
     | - register.js 
    app.html 
    app.js 
    main.js 

當我做下面的,它只是正常工作的項目文件結構:

app.html

<template> 
 
    <div> 
 
    <a href="user">register user</a> 
 
    <a href="otherlink">otherlink</a> 
 
    </div> 
 
    <div class='main'> 
 
    <router-view></router-view> 
 
    </div> 
 
</template>

app.js

this.router.configure(config => { 
 
    config.title = 'demo'; 
 
    config.options.pushState = true; 
 
    config.map([ 
 
    // home routes 
 
    { route: ['','home'], moduleId: './home/home', nav: true, title:'Home' }, 
 

 
    // User register 
 
    { route: ['user'], moduleId: './user/register', nav: true, title:'Register User'} 
 
    ]); 
 
});

但是,當我從用戶用戶更改路徑/註冊像下面,它不再起作用

app.html

<template> 
 
    <div> 
 
    <a href="user/register">register user</a> 
 
    <a href="otherlink">otherlink</a> 
 
    </div> 
 
    <div class='main'> 
 
    <router-view></router-view> 
 
    </div> 
 
</template>

app.js

this.router.configure(config => { 
 
    config.title = 'demo'; 
 
    config.options.pushState = true; 
 
    config.map([ 
 
    // home routes 
 
    { route: ['','home'], moduleId: './home/home', nav: true, title:'Home' }, 
 

 
    // User register 
 
    { route: ['user/register'], moduleId: './user/register', nav: true, title:'Register User'} 
 
    ]); 
 
});

中和鉻調試器,我看到這個錯誤:

GET http://localhost:9000/用戶 /距離/用戶/ register.html 404(Not Found)

請注意,不知怎的,一個額外的用戶被添加到URL,導致無法找到register.html文件。再說一次,當我使用用戶作爲路由時,它工作正常,沒有任何錯誤,但是當我從用戶更改爲用戶/註冊時,它不再工作。

有人請讓我知道爲什麼會發生這種情況,以及如何解決它?

回答

7

更改 href的鏈接爲 href="#/user/register"並且應該爲您解決問題。

我沒有看到您啓用了pushState。請編輯你的index.html並添加

<base href="http://localhost:9000/"> 

或者你的根網址是什麼。這應該爲您解決問題。

+0

感謝您的回覆。但是,這並沒有奏效。我們添加了** config.options.pushState = true **從網址中刪除#號,所以http:// localhost:9000/user可以在沒有#的情況下訪問。但是由於某種原因,即使路由設置爲** user/register **,我們也無法使http:// localhost:9000/user/register正常工作。 – 2015-03-25 01:36:10

7

我對Ashley的答案做了一個小改動,這使得它更加環保,因爲我們不需要對本地URL進行硬編碼。我測試了它,並且運行得很好。

<base href="/">