我如何在 Ember.js 3.18 中获得我的应用程序的所有路由列表?

How would I get a list of all the routes of my application in Ember.js 3.18?

我正在尝试构建自动导航。

如何在 Ember.js 3.18 中获取我的应用程序的所有路由列表?

这个问题是 4 年前提出的,答案似乎已经过时而且很老套。

我一直在尝试几件事。这种代码让我得到了当前的路线名称。但这不是我想要的:我想要一个包含所有可用路线的对象。

在组件 JS 中:

import { inject as service } from '@ember/service';

export default class navComponent extends Component {
  @service router;
}

在模板中:

{{router.currentRouteName}}

据我所知,没有 public API。但是,你可以通过私有 API:

得到你想要的
this.router._router._routerMicrolib.recognizer.names

这 returns 一个对象,其中的键是您应用程序中的路由。它还添加了 _loading_error 路由,因此您可能需要根据需要进行一些过滤。

如果您决定使用这个,我建议您使用测试!当 Ember.js 的新版本发布时,私人 APIs 可能会发生变化,因此测试将防止您在更新后感到意外。