我试图在每个余烬中的最后一个项目下显示一个标记-我尝试了类似@last的方法-但它返回错误
<ul>
{{#each people as |person index|}}
<li>Hello, {{person.name}}! You're number {{index}} in line</li>
{{/each}}
</ul>
答案 0 :(得分:3)
Ember的{{each}}
模板助手没有提供简便的方法。
您可能已经发现,可以使用{{unless index}}
有条件地在第一个对象上渲染内容。之所以可行,是因为索引从零开始,并且0
被认为是错误的。
您可以结合使用ember-truth-helpers
和ember-math-helpers
来实现与最后一个元素相当的效果。两者都是维护良好的余烬插件,可提供全套模板帮助程序。
Ember-truth-helpers提供了一个eq
帮助程序,它增加了对模板中的相等比较的支持。灰烬辅助函数提供了一个sub
辅助函数,可以从模板的另一个辅助函数中减去一个值。结合它们,我们可以建立一个仅对最后一个元素成立的条件:
{{#each items as |item index|}}
<li>
{{item}}
{{#unless index}}(first){{/unless}}
{{#if (eq index (sub items.length 1))}}(last){{/if}}
</li>
{{/each}}
您在这里发现了余烬旋转,证明了这种方法:https://ember-twiddle.com/6ea05a2e9c884bd772eefabc91173d08?openFiles=templates.application.hbs%2C
如果数组是Ember.NativeArray
,则更加简单。余烬的NativeArray
提供了lastObject
property,它指向数组中的最后一项。您可以直接将其用于相等比较,就像@Gaurav在评论中指出的:{{#if (eg item items.lastObject)}}(last){{/if}}