Ember.js 如何在每个模板中插入额外的项

Ember.js 如何在每个模板中插入额外的项,ember.js,handlebars.js,Ember.js,Handlebars.js,我有这样的模板 <tbody> {{#each topics as |topic|}} {{topic-list-item topic=topic}} {{/each}} </tbody> {{{#每个主题作为{主题} {{topic list item topic=topic} {{/每个}} 我想在该渲染模板列表中插入额外的项,如下所示: <tbody> {{#each topics as |topic|}} {{#if

我有这样的模板

<tbody>
  {{#each topics as |topic|}}
    {{topic-list-item topic=topic}}
  {{/each}}
</tbody>

{{{#每个主题作为{主题}
{{topic list item topic=topic}
{{/每个}}
我想在该渲染模板列表中插入额外的项,如下所示:

<tbody>
  {{#each topics as |topic|}}
    {{#if someCondition}}
      {{my-list-item}}
    {{else}}
      {{topic-list-item topic=topic}}
    {{/if}}
  {{/each}}
</tbody>

{{{#每个主题作为{主题}
{{#如果某个条件}
{{我的列表项}
{{else}
{{topic list item topic=topic}
{{/if}
{{/每个}}
但问题是当
someCondition
为真时,此解决方案将跳过一些
主题
,即它将注意插入但替换

是否有将项目添加到模板渲染列表的解决方案


更新:如果
someCondition
为true,我只想将
{{my list item}}
插入渲染列表一次

如果您想不考虑条件始终显示主题列表项,那么可以通过删除其他项来完成

<tbody>
      {{#each topics as |topic|}}
        {{#if someCondition}}
          {{my-list-item}}
        {{/if}}
        {{topic-list-item topic=topic}}        
      {{/each}}
    </tbody>

{{{#每个主题作为{主题}
{{#如果某个条件}
{{我的列表项}
{{/if}
{{topic list item topic=topic}
{{/每个}}

如果您想在任何情况下始终显示主题列表项,则可以通过删除else来实现

<tbody>
      {{#each topics as |topic|}}
        {{#if someCondition}}
          {{my-list-item}}
        {{/if}}
        {{topic-list-item topic=topic}}        
      {{/each}}
    </tbody>

{{{#每个主题作为{主题}
{{#如果某个条件}
{{我的列表项}
{{/if}
{{topic list item topic=topic}
{{/每个}}

我对前面的答案投了赞成票,但想添加另一个常见用例:

如果您不介意通过附加属性扩展
主题列表项
对象(换言之,如果附加模板依赖于
主题列表项
的任何属性),这将起作用:

<tbody>
  {{#each topics as |topic|}}
    {{#if topic.someBooleanProperty}}
      {{my-list-item}}
    {{/if}}
      {{topic-list-item topic=topic}}
  {{/each}}
</tbody>

{{{#每个主题作为{主题}
{{#如果主题为.someBooleanProperty}
{{我的列表项}
{{/if}
{{topic list item topic=topic}
{{/每个}}
或者(与上面的答案相同,只是结构不同)

{{{#每个主题作为|主题}
{{#如果主题为.someBooleanProperty}
{{我的列表项}
{{topic list item topic=topic}
{{else}
{{topic list item topic=topic}
{{/if}
{{/每个}}

我对前面的答案投了赞成票,但想添加另一个常见用例:

如果您不介意通过附加属性扩展
主题列表项
对象(换言之,如果附加模板依赖于
主题列表项
的任何属性),这将起作用:

<tbody>
  {{#each topics as |topic|}}
    {{#if topic.someBooleanProperty}}
      {{my-list-item}}
    {{/if}}
      {{topic-list-item topic=topic}}
  {{/each}}
</tbody>

{{{#每个主题作为{主题}
{{#如果主题为.someBooleanProperty}
{{我的列表项}
{{/if}
{{topic list item topic=topic}
{{/每个}}
或者(与上面的答案相同,只是结构不同)

{{{#每个主题作为|主题}
{{#如果主题为.someBooleanProperty}
{{我的列表项}
{{topic list item topic=topic}
{{else}
{{topic list item topic=topic}
{{/if}
{{/每个}}

它将插入
我的列表项
主题的大小时间,请查看更新
某些条件
-取决于
主题
或其他变量。所以你是说,
someCondition
对于许多主题都是正确的,但是
my list item
组件应该只包含一次,也许根本不应该包含任何条件,只需插入额外的项目
我的列表项目
-这应该位于
主题列表项目
-然后您可以从每个块中删除
我的列表项目
。否则另一种方法将是
{{{每个主题作为|主题索引|}
,这样您就可以使用像{{if(eq索引0)}这样的ember truth助手来检查索引了{{my list item}}{{/if}}`它将插入
my list item
topics的大小时间,请查看更新
someCondition
-取决于
topic
或其他变量。因此您说的
someCondition
对于许多主题都是正确的,但是
my list item
组件应该只包含一次,可能此时不应该有任何条件总之,只需插入额外的项
我的列表项
-这应该位于
主题列表项的顶部
-然后您可以从每个块中删除
我的列表项
。否则,另一种方法将是
{{每个主题作为{主题索引}}
,这样您就可以使用类似{if(eq索引0)}的余烬truth助手来检查索引{{my list item}}{{/if}}`扩展对象肯定会工作,但修复模板看起来更容易。哦,我还看到你更新了问题。在这种情况下,我的答案不再有效。扩展对象肯定会工作,但修复模板看起来更容易。哦,我还看到你更新了问题。在这种情况下,我的答案不再有效。