2015-03-25 6 views
6

Sto tentando di estrarre la configurazione del router dal file app.js e inserirla in un file separato (app.router.js). Questa è probabilmente una cosa facile da fare ma non so come farlo.Inserire la configurazione del router in un file separato in Aurelia

attuale app.js di file è simile al seguente:

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

     ]); 

    }); 

    } 
} 

Una volta che la parte di configurazione è in un file separato, credo di avere chiamare in questo modo in app.js:

this.router.configure(myRouterConfig); 

prega fatemi sapere come farlo con l'esempio di codice.

risposta

9

La soluzione è più semplice da comprendere quando ti rendi conto che l'argomento che passi a this.router.configure è solo una funzione. Per mettere la configurazione del router in un file separato, basta che quel file esporti una funzione che accetta un argomento (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'} 
    ]);  
} 

Poi, in app.js:

import appRouter from 'app.router'; 

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

È possibile, naturalmente, il nome appRouter quello che vuoi.

+0

Grazie, Jordan! Era esattamente ciò di cui avevo bisogno! –