在 ember 中的 #each 助手中找到最后一个元素

Find last but one element in #each helper in ember

在我的 ember 应用程序中,我想以不同的方式显示数组的最后一个元素。

{{#each item in model}}
   {{#if lastButOneItem}}
      + {{item}}
   {{else}}
      {{item}} +
   {{/if}}
{{/each}}

但我不确定如何为 lastButOneItem 添加条件。有没有简单的方法可以实现?

我尝试为此分配一个 ItemController。但是我无法从该项目控制器和当前索引中获取元素总数。

请帮忙。

在 Ember 中有多种方法可以解决这个老问题,但在 CSS 级别处理它可能最容易:

{{#each item in model}}
   <span class="item">{{item}}</span>
{{/each}}
.item                   ::after  { content: " + "; }
.item:nth-last-child(2) ::after  { content: "";    }
.item:nth-last-child(2) ::before { content: " + "; }

另一种方法是在您的控制器或视图或组件中构建一个字符串数组:

displayItems: function() {
    var model = this.get('model');
    var len   = model.length;

    return model.map(function(item, idx) {
        return idx === len - 2 ? " + " + item : item + " + ";
    });
} . property('model.@each')
{{#each item in displayItems}}
  {{item}}
{{/each}}