2015-03-25 15 views
6

Ich versuche, Router-Konfiguration von app.js Datei zu entfernen und in eine separate Datei (app.router.js). Dies ist wahrscheinlich eine einfache Sache zu tun, aber ich weiß nicht, wie es geht.Setzen Sie Router-Konfiguration in eine separate Datei in Aurelia

Aktuelle app.js Datei sieht wie folgt aus:

import {Router} from 'aurelia-router'; 

export class App { 

    static inject() { return [Router]; }; 

    constructor(router) { 

    this.router = router; 

    // router - put this part in a separate file 
    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 routes 
     { route: ['user/register'], moduleId: './user/register', nav: true, title:'User Registration'} 

     ]); 

    }); 

    } 
} 

Sobald der Konfigurationsteil in einer separaten Datei ist, glaube ich nenne ich habe es so in app.js:

this.router.configure(myRouterConfig); 

Bitte lassen Sie mich wissen wie man es mit Codebeispiel macht.

Antwort

9

Die Lösung ist leichter zu verstehen, wenn Sie erkennen, dass das Argument, das Sie an this.router.configure übergeben, nur eine Funktion ist. Um Ihre Routerkonfiguration in eine separate Datei zu stellen, exportieren Sie einfach eine Datei, die ein Argument benötigt (config).

// app.router.js 
export default function (config) { 
    config.title = 'demo'; 
    config.options.pushState = true; 

    config.map([ 
    // home routes 
    { route: ['','home'], moduleId: './home/home', nav: true, title:'Home' }, 
    // User routes 
    { route: ['user/register'], moduleId: './user/register', nav: true, title:'User Registration'} 
    ]);  
} 

Dann in app.js:

import appRouter from 'app.router'; 

// ...then... 
this.router.configure(appRouter); 

können Sie, natürlich wollen Sie Namen appRouter nichts.

+0

Danke, Jordan! Das war genau das, was ich brauchte! –

Verwandte Themen