簡體   English   中英

獲取奧雷利亞子組件的路線

[英]Getting routes of a child component in aurelia

我不是Aurelia大師,也不是初學者。 到目前為止,我還沒有解決問題的方法,但是我認為必須存在一種希望的簡便方法來執行以下操作:

我有了一個非常基本的結構,其中包含app.js和一些組件(例如admin.js ...)。 因為我想導航所有組件的路線,所以我需要將這些路線放入我的app.js中。 簡單或愚蠢的問題:我如何實現這一目標? 我試圖簡單地注入組件,但是無論我做什么,我都無法訪問router屬性。

示例管理組件路由器:

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

我知道,只要我沒有加載該組件,管理員的路由器就始終是空的。 但是即使加載了組件,路由器對象也是未定義的。

一個沒有運行的Gist更好地顯示了我想要的(希望)

也許我在這里遇到了一些基本的錯誤,並且不了解aurelia甚至js的工作方式?

謝謝您的幫助。

如果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' }
  ];
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM