【问题标题】:Find last but one element in #each helper in ember在 ember 中的 #each 助手中查找最后一个元素
【发布时间】:2015-04-21 23:08:37
【问题描述】:

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

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

但我不确定如何设置 lastButOneItem 的条件。有没有简单的方法来实现它?

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

请帮忙。

【问题讨论】:

    标签: ember.js handlebars.js each


    【解决方案1】:

    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}}
    

    【讨论】:

    • 感谢您的解决方法。第二个似乎更舒服。
    猜你喜欢
    • 1970-01-01
    • 2011-04-29
    • 1970-01-01
    • 1970-01-01
    • 2016-09-28
    • 1970-01-01
    • 1970-01-01
    • 2022-01-21
    • 1970-01-01
    相关资源
    最近更新 更多