2015-03-25 8 views
6

Próbuję wyjąć konfigurację routera z pliku app.js i umieścić go w osobnym pliku (app.router.js). Jest to prawdopodobnie łatwe, ale nie wiem, jak to zrobić.Ustaw konfigurację routera w osobnym pliku w Aurelia

Aktualny app.js plik wygląda tak:

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'} 

     ]); 

    }); 

    } 
} 

Gdy część konfiguracji jest w oddzielnym pliku, wierzę, mam nazwać tak w app.js:

this.router.configure(myRouterConfig); 

Proszę dać mi znać, jak to zrobić za pomocą przykładowego kodu.

Odpowiedz

9

Rozwiązanie jest łatwiejsze do zrozumienia, gdy zdajemy sobie sprawę, że argument przekazywany do this.router.configure jest tylko funkcją. Aby ustawić konfigurację routera w osobnym pliku, wystarczy, że ten plik wyeksportuje funkcję, która przyjmuje jeden argument (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'} 
    ]);  
} 

Następnie w app.js:

import appRouter from 'app.router'; 

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

Można, oczywiście, nazwa appRouter cokolwiek chcesz.

+0

Dziękuję, Jordanii! To było dokładnie to, czego potrzebowałem! –

Powiązane problemy