打印出 Ember 模板中的所有父子路由

Print out all of the parent and child routes in the template for Ember

假设我有一条如下所示的 Ember 路线

myApp/RouteA/RouteB/RouteC

有没有办法在我的路由或控制器中获取不同路由级别的所有名称?

原因是因为我正在尝试编写一个 ember 动态生成面包屑的组件。

这里有一个更具体的例子

虽然 @jelhan 评论了一个很好的现有插件,但如果您需要,可以直接实现自己的插件。

Ember 有一个 public router service which can be used to get info about the current route. One such method that would work here is currentRouteName。想象一下路由结构:

Router.map(function() {
  this.route('about');
  this.route('blog', function () {
    this.route('post', { path: ':post_id' });
  });
});
  • currentRouteName 将 return
    • index 当您访问 /
    • about 当您访问 /about
    • blog.index 当您访问 /blog
    • blog.post 当您访问 /blog/some-post-id

您可以在分隔符上拆分以获得不同的路线部分来构建您的面包屑。在您的面包屑组件中,只需注入 routerService 并使用计算 属性 来获取当前面包屑(这将在应用更改路由时更新)

import Component from '@ember/components';
import { inject } from '@ember/service';
import { computed } from '@ember/object';

export default Component.extend({
  router: inject(),
  breadcrumbs: computed('router.currentRouteName', function(){
     // build your breadcrumbs however you see fit
  })
})