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

如何在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。但是,您可以通过私有(private)API获得所需的内容:

this.router._router._routerMicrolib.recognizer.names

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

如果您决定使用它,我建议您使用测试!当新版本的Ember.js出现时,专用API可能会更改,因此测试可以防止您在更新后感到意外。

10-01 20:41
查看更多