如何在Ember.js 3.18中获得应用程序所有路由的列表?
我正在尝试建立一个自动导航系统 如何在Ember.js 3.18中获得应用程序所有路由的列表 这个问题是4年前提出来的,答案似乎过时了,有点老套 我一直在尝试几件事。这类代码为我获取当前路由名称。但这不是我想要的:我想要一个包含所有可用路由的对象 在组件JS中:如何在Ember.js 3.18中获得应用程序所有路由的列表?,ember.js,routes,navigation,Ember.js,Routes,Navigation,我正在尝试建立一个自动导航系统 如何在Ember.js 3.18中获得应用程序所有路由的列表 这个问题是4年前提出来的,答案似乎过时了,有点老套 我一直在尝试几件事。这类代码为我获取当前路由名称。但这不是我想要的:我想要一个包含所有可用路由的对象 在组件JS中: import { inject as service } from '@ember/service'; export default class navComponent extends Component { @service
import { inject as service } from '@ember/service';
export default class navComponent extends Component {
@service router;
}
在模板中:
据我所知,没有公开的API。但是,您可以通过专用API获得所需:
this.router._router._routerMicrolib.recognizer.names
这将返回一个对象,其中键是应用程序中的路由。它还添加了\u加载
和\u错误
路由,因此您可能需要根据需要进行一些过滤
如果你决定用这个,我建议你用一个测试!当新版本的Ember.js发布时,私有API可能会发生变化,因此测试将防止您在更新后遇到不好的惊喜。我用这个答案实现了一个解决方案。这太棒了。