山魈车把每个循环 - 如何检查奇怪的项目

mandrill handlebars each loop - how to check odd items

我正在使用 mandrillapp 使用 send-api 发送大量定制的电子邮件。 我的模板使用的是 mandrill 最近支持的 handlebar 语法:https://mandrill.zendesk.com/hc/en-us/articles/205582537 并且我使用的 #each 循环似乎运行良好。

现在我需要更好地迭代:即查看每个循环中的项目是奇数还是偶数,如果是最后一个或类似的东西。

<div class="entry">
  {{#each products}}
    <div class="odd"> <!-- how to change class to even?-->
      <div>{{name}}</div>
      <div>{{price}}€</div>
    </div>
  {{/each}}
</div>

注意:我不是在谈论 "handlebarsjs",而是在谈论 mandrill 模板中可用的 handlebar 语法

你不能用某些东西来检查 {{#like @index % 2}} 但是如果您有一个包含属性的列表,您可以将 属性 "odd" 添加到您的列表中进行检查,因此您的列表将如下所示:

products: [
    {'name': 'productName1', 'price': 22, 'odd': true},
    {'name': 'productName1', 'price': 22, 'odd': false},
    {'name': 'productName2', 'price': 13, 'odd': true},
    {'name': 'productName3', 'price': 42, 'odd': false},
    {'name': 'productName4', 'price': 63, 'odd': true},
]

您的山魈模板应该类似于:

<div class="entry">
  {{#each products}}
    <div class="{{#if odd}}odd{{else}}even{{/if}}"> <!-- how to change class to even-->
      <div>{{name}}</div>
      <div>{{price}}€</div>
    </div>
  {{/each}}
</div>

你可以试试Handlebar.helper

Handlebars.registerHelper('if_even', function(conditional, options) {
 if((conditional % 2) == 0) {
  return options.fn(this);
 } else {
  return options.inverse(this);
 } 
});

然后你可以在每个循环中使用它,如下所示:

<ul>
  {{#each items}}
    <li>{{ title }} {{#if_even}} even {{ else }} odd {{/if_even}}
  {{/each}}
</ul>

对我有用!