2015-03-25 14 views
6

Tôi đang cố gắng lấy cấu hình bộ định tuyến từ app.js tệp và đặt nó vào một tệp riêng biệt (app.router.js). Đây có lẽ là một điều dễ dàng để làm nhưng tôi không biết làm thế nào để làm điều đó.Đặt cấu hình bộ định tuyến trong một tệp riêng biệt trong Aurelia

hiện app.js tập tin trông như thế này:

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

     ]); 

    }); 

    } 
} 

Khi phần cấu hình là trong một file riêng biệt, tôi tin rằng tôi có gọi nó là như thế này trong app.js:

this.router.configure(myRouterConfig); 

Xin vui lòng cho tôi biết làm thế nào để làm điều đó với ví dụ mã.

Trả lời

9

Giải pháp dễ hiểu hơn khi bạn nhận ra rằng đối số bạn chuyển đến this.router.configure chỉ là một hàm. Để đặt cấu hình bộ định tuyến của bạn trong một tệp riêng biệt, chỉ cần xuất tệp đó một hàm lấy một đối số (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'} 
    ]);  
} 

Sau đó, trong app.js:

import appRouter from 'app.router'; 

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

Bạn có thể, tất nhiên, tên appRouter bất cứ điều gì bạn muốn.

+0

Cảm ơn bạn, Jordan! Đó là chính xác những gì tôi cần! –

Các vấn đề liên quan