1

可能缺少一些简单的东西,但是如何根据对对象的操作在 Handlebars 中指定条件?

想做类似的事情

{{#hasDiscount this}}
  <tr>
    <td>Discount</td>
    <td>{{formatPrice this.Discount}}</td>
  </tr>
{{/hasDiscount}}

与助手一起

Handlebars.registerHelper 'hasDiscount', (cart) ->
  :runBlock: if cart.Discount > 0

不知道如何告诉它运行该块。

感谢您的任何意见。

4

2 回答 2

3

玩了之后发现了一个更简单的方法。

{{#if hasDiscount}}
   <tr>
    <td>Discount</td>
    <td>{{formatPrice this.Discount}}</td>
  </tr>
{{/if}}

因为购物车已经是模板中的对象,所以我可以像这样设置助手

Handlebars.registerHelper 'hasDiscount', ->
  true if @Discount > 0
于 2012-04-12T14:11:03.103 回答
1

助手通过 ablock作为最后一个参数。这block将是一个您可以运行以获取块内容的函数,您也可以block.inverse()获取{{else}}分支:

Handlebars.registerHelper 'hasDiscount', (cart, block) ->
  if cart.Discount > 0
    block()
  else
    block.inverse()

文档并没有真正说明这一点,因此您必须根据示例进行一些猜测并尝试一些事情。

于 2012-04-11T21:27:16.393 回答