我不是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更好地展示我想要的东西(希望如此)
也许我在这里得到了一些基本错误,并且不理解aurelia甚至js的工作方式?
感谢您的帮助。
答案 0 :(得分: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' }
];
}