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

Posted

技术标签:

【中文标题】mandrill 车把每个循环 - 如何检查奇怪的项目【英文标题】:mandrill handlebars each loop - how to check odd items 【发布时间】:2015-09-30 07:52:11 【问题描述】:

我正在使用 mandrillapp 使用 send-api 发送大量定制的电子邮件。 我的模板使用的是 mandrill 最近支持的把手语法: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 模板中可用的车把语法

【问题讨论】:

【参考方案1】:

你不能用某些东西来检查它 #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 oddoddelseeven/if"> <!-- how to change class to even-->
      <div>name</div>
      <div>price€</div>
    </div>
  /each
</div>

【讨论】:

我总是将else 条件添加到类而不是odd 条件。尽管ul 有很多lis @StevenAguilar 检查您的列表是否设置了“奇数”属性。此解决方案需要在处理此属性之前将其列在列表中。【参考方案2】:

你可以试试 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>

它对我有用!

【讨论】:

Mandrill 不允许注册自定义车把助手。

以上是关于mandrill 车把每个循环 - 如何检查奇怪的项目的主要内容,如果未能解决你的问题,请参考以下文章

“this”似乎在车把“每个”助手中的旧迭代中具有价值(在 mandrill 模板中使用)

Mandrill — 如何格式化车把模板的复杂数据

在 Mandrill 车把合并变量中使用 HTML

mandrill、merge_vars 和车把阵列问题

如何在山魈的车把表达式内发送花括号?

尝试从 Mandrill 发送电子邮件时出现 html 或车把编码问题