把手中的自定义条件

时间:2012-04-11 21:14:19

标签: coffeescript handlebars.js

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

想做点什么

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

使用

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

不确定如何告诉它运行该块。

感谢您的任何意见。

2 个答案:

答案 0 :(得分:3)

玩完之后找到了一种更简单的方法。

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

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

Handlebars.registerHelper 'hasDiscount', ->
  true if @Discount > 0

答案 1 :(得分:1)

帮助器作为最后一个参数传递blockblock将是一个可以运行以获取块内容的函数,您还可以block.inverse()到达{{else}}分支:

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

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