2015-03-24 5 views
6

Ich habe ein Problem mit der Konfiguration Aurelia Route, wenn der Pfad wie layer1/layer2 nicht nur layer1. Hier ist die Projektdateistruktur (Dateien unter dist erstellt auf Dateien unter src Ordner automatisch basierend wird)Aurelia Routing-Konfiguration Problem

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 

Wenn ich folgendes tun es funktioniert gut:

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'} 
 
    ]); 
 
});

Aber wenn ich den Weg von Benutzer-Benutzer ändern/registrieren wie unten, es funktioniert nicht mehr

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'} 
 
    ]); 
 
});

Und in Chrom Debugger, sehe ich diesen Fehler:

GET http://localhost:9000/Benutzer/dist/user/register.html 404 (nicht gefunden)

Beachten Sie, dass irgendwie eine zusätzliche Benutzer wird der URL hinzugefügt, die nicht in der Lage sein Register.html Datei zu finden. Wenn ich gerade Benutzer als Route benutze, funktioniert es gut ohne Fehler, aber wenn ich nur von Benutzer zu Benutzer/Register ändern, funktioniert es nicht mehr.

Könnte mir bitte jemand sagen, warum das passiert und wie man es beheben kann?

Antwort

7

Ändern Sie die href für den Link zu href="#/user/register" und das sollte das Problem für Sie klären.

Ich habe nicht gesehen, dass Sie PushState aktiviert hatten. Bearbeiten Sie Ihre index.html und fügen

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

oder was auch immer Ihr Root-URL ist. Dies sollte das Problem für Sie beheben.

+0

Vielen Dank für Ihre Antwort. Das hat jedoch nicht funktioniert. Wir haben ** config.options.pushState = true ** hinzugefügt, um # sign aus der URL zu entfernen, sodass http: // localhost: 9000/user ohne # erreichbar ist. Aber wir können nicht http: // localhost: 9000/user/register arbeiten, auch wenn route aus irgendeinem Grund auf ** user/register ** gesetzt ist. –

7

Ich habe eine kleine Änderung an Ashleys Antwort gemacht, die ein wenig umweltfreundlicher ist, da wir keine lokale URL programmieren müssen. Ich habe es getestet und funktioniert auch gut.

<base href="/">