Ember.js 如何仅在特定管线中显示组件?

Ember.js 如何仅在特定管线中显示组件?,ember.js,Ember.js,我有一个名为hero(在application.hbs中)的组件,我希望仅在主页中显示此组件 我研究过如何做到这一点,但没有任何成功。谢谢 几分钟后,在GitHub上进行一些搜索 只需安装ember安装ember真相助手并检查路由名称: {{#if (eq currentRouteName 'index')}} {{hero}} {{/if}} 很乐意帮忙 我需要更多的细节,但是,我将假设您的回家路线是“/”路线 “/”路由实际上是索引路由,因此如果创建index.hbs文件,它将充当索引

我有一个名为
hero
(在
application.hbs
中)的组件,我希望仅在主页中显示此组件


我研究过如何做到这一点,但没有任何成功。谢谢

几分钟后,在GitHub上进行一些搜索

只需安装
ember安装ember真相助手
并检查路由名称:

{{#if (eq currentRouteName 'index')}}
  {{hero}}
{{/if}}

很乐意帮忙

我需要更多的细节,但是,我将假设您的回家路线是“/”路线


“/”路由实际上是索引路由,因此如果创建index.hbs文件,它将充当索引路由的模板。然后,您只需将
hero
组件移动到index.hbs文件中

您还可以使用
component
helper动态呈现组件,它在模板中为您保存一条条件语句

辅助对象的第一个参数是要渲染的组件的名称(作为字符串)。所以
{{component'blog post}}
与使用
{{blog post}}
一样

当传递给
{{component}}
的参数计算结果为null或未定义时,帮助器将不呈现任何内容。当参数更改时,将销毁当前渲染的组件,并创建并引入新组件

因此,您可以安全地将任何内容传递给
组件
帮助器,在您的情况下,您可以动态生成组件名称,而无需担心会出现错误


我不能确定你的理由,但我怀疑这可能是一个解决办法

有一个不可见的“应用程序”路由。。。还有一个隐式的“索引”路由,但是您可以跳过这一混淆,只需创建一个“主”路由并给它一个根路径。应用程序模板将容纳插座-然后您可以将组件放置在“主”模板中

(不要像这样编写应用程序路由,只是为了可视化)

有了完整的例子。如果这不符合您的要求,请参考条件建议。:)


currentRouteName
仅在应用程序控制器中可用。每个路由都有自己的模板。对于主页(/)来说,它是“index.hbs”,这是一个很好的时机,可以用一个例子进行说明。答案很可能是您的结构可能会被重新考虑,但我可以想象一个场景,在这个场景中,您确实希望检查当前路线并有一个if/
Router.map(function() {
  // overarching 'application' route
  this.route('application', function() {
    this.route('home', { path: '/' });
    this.route('other');
  });
});
Router.map(function() {
  // here's an example of skipping of skipping the mysterious 'index' in another situation
  this.route('books', function() {
    this.route('books-list', { path: '/' });
    this.route('book');
  });
});