2016-11-25 61 views
0

我不是Aurelia主人,還有更多的初學者。 到目前爲止,我得到了我的問題沒有解決,但我認爲一定存在一個希望簡單的方法來做到以下幾點:獲得aurelia兒童組成部分的路線

我與app.js和一些部件一個非常基本的結構(如admin.js。 ..)。 因爲我想有一個導航的所有組件的路線,我需要把這些路線到我的app.js. 簡單或愚蠢的問題:我如何實現這一目標? 我試圖簡單地注入組件,但我無法訪問路由器屬性,無論我做什麼。

實例管理組件路由器:

configureRouter(config, router) { 
    config.map([ 
     { route: '', name: 'default', moduleId: 'components/admin/default/default' }, 
     { route: 'roles', name: 'roles', moduleId: 'components/admin/roles/roles', title: 'Rollenverwaltung' }, 
     { route: 'users', name: 'users', moduleId: 'components/admin/users/users', title: 'Nutzerverwaltung' }, 
     { route: 'employees', name: 'employees', moduleId: 'components/admin/employees/employees', title: 'Mitarbeiterverwaltung' } 
    ]); 

    this.router = router; 
} 

我想在我的應用程序組件

static inject() { return [AuthService, Admin]; } 

constructor(authService, admin) { 
    this.auth = authService; 

    this.adminRouter = admin; 
} 

我知道,只要我沒有加載組件是什麼,管理的路由器會反正是空的。但即使加載組件,路由器對象也是未定義的。

A not running Gist,以更好地展示我想(希望)

也許是我得到的東西basicly錯在這裏不明白的奧裏利亞方式,甚至爵士的作品?

謝謝你的幫助。

+0

我不明白你想要做什麼。你介意提供一個重現你的問題的要點嗎?以此爲出發點https://gist.run/?id=7542e061bc940cde506b –

+0

所以我加了一個小小的要點https://gist.run/?id=b90c5fcbde8098c1395f1d9f3d00a01f 但我仍然不確定這是否完全說明了我的觀點或者以任何方式提供幫助,因爲我是一個全新的菜鳥。 –

回答

1

如果Admin組件本身沒有組成,那麼即使父組件不會「繼承」admin的路由,也無法訪問路由器。

如果要定義在你的應用程序的路線,然後拉他們到一個地方或許會有這樣的對您有用 -

parent.js

import {Admin} from './admin'; 

export class Parent { 
    static inject = [Admin]; 
    constructor(admin) { 
    this.admin = admin; 
    this.admin.routes.forEach(route => { 
     this.router.addRoute(route); 
    } 
    } 
} 

admin.js

export class Parent { 
    routes = [ 
    { route: '', name: 'default', moduleId: 'components/admin/default/default' }, 
    { route: 'roles', name: 'roles', moduleId: 'components/admin/roles/roles', title: 'Rollenverwaltung' }, 
    { route: 'users', name: 'users', moduleId: 'components/admin/users/users', title: 'Nutzerverwaltung' }, 
    { route: 'employees', name: 'employees', moduleId: 'components/admin/employees/employees', title: 'Mitarbeiterverwaltung' } 
    ]; 
} 
+0

好吧,讓我看看我是否得到這個權利:你的想法是隻是定義一個路由對象數組,我包含在我的app.js(父)並配置路由器與這些數組?糾正我,如果我錯了。 那麼,這不是我能想到的最好的解決方案,但肯定是最簡單的。我會試一試。至少直到我可能找到另一種解決方案。 謝謝! –