如何在模板中插入额外的项目

时间:2016-09-23 11:09:10

标签: ember.js handlebars.js

我有这样的模板

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

我想在此渲染模板列表中插入额外的项目,如下所示:

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

但问题是当topic为真时,此解决方案会跳过一些someCondition,即它会记录插入但替换。

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

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

2 个答案:

答案 0 :(得分:4)

如果您希望无论条件如何都始终显示topic-list-item,您可以通过删除else来实现。

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

答案 1 :(得分:1)

我投了上一个答案,但想添加另一个常见的用例:

如果您不介意通过附加属性扩展topic-list-item对象(换句话说,如果附加模板依赖于topic-list-item的任何属性),这将起作用:

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

或(与上面的答案相同,只是结构不同)

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