代码之家  ›  专栏  ›  技术社区  ›  The Old County

余烬-如果每个

  •  0
  • The Old County  · 技术社区  · 6 年前

    我试图在each-in-ember中的最后一个项下显示一块标记——我尝试了类似@last的东西——但它返回时出现了一个错误

    <ul>
      {{#each people as |person index|}}
        <li>Hello, {{person.name}}! You're number {{index}} in line</li>
      {{/each}}
    </ul>
    
    1 回复  |  直到 6 年前
        1
  •  5
  •   jede    4 年前

    余烬 {{each}} template helper不提供简单的方法。

    你可能发现,你可以用 {{unless index}} 在第一个对象上有条件地呈现内容。这是工作,因为索引开始于零和零 0

    你可以合并 ember-truth-helpers ember-math-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 (eq item items.lastObject)}}(last){{/if}}