2016-11-25 98 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(父)并配置路由器与这些数组?纠正我,如果我错了。 那么,这不是我能想到的最好的解决方案,但肯定是最简单的。我会试一试。至少直到我可能找到另一种解决方案。 谢谢! –