1

簡単なものが欠けているかもしれませんが、オブジェクトの操作に基づいてハンドルバーで条件を指定するにはどうすればよいですか?

次のようなことをしようとしています

{{#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

ヘルパーはblock最後の引数として渡されます。これblockは、ブロックのコンテンツを取得するために実行できる関数になります。また、ブランチblock.inverse()で取得することもできます。{{else}}

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

ドキュメントは実際にはこれを詳しく説明していないので、いくつかの推測を行い、例に基づいていくつかのことを試す必要があります。

于 2012-04-11T21:27:16.393 に答える