# 組み込みヘルパー
# #if
if
ヘルパーを使用すると、ブロックを条件付きでレンダリングできます。引数がfalse
、undefined
、null
、""
、0
、または[]
を返す場合、Handlebarsはブロックをレンダリングしません。
上記のテンプレートに以下の入力を渡すと
以下のような結果が生成されます
入力が空のJSONObject {}
の場合、author
はundefined
になり、if
条件は失敗し、以下のような出力が生成されます
<div class="entry"></div>
ブロック式を使用する場合、式が偽の値を返した場合に実行されるテンプレートセクションを指定できます。 else
でマークされたセクションは、「elseセクション」と呼ばれます。
# includeZero
includeZero=true
オプションを設定すると、条件が空でないものとして扱われます。これは事実上、0
が正のパスまたは負のパスによって処理されるかどうかを決定します。
# サブ式
ヘルパーは、テンプレートにカスタムロジックを追加するための提案された方法です。任意のヘルパーを作成し、サブ式で使用できます。
たとえば、変数の初期化をチェックする場合、組み込みの#if
チェックは、空のコレクションに対してfalseを返すため、適切でない場合があります(Utils.isEmptyを参照)。
以下のように「undefined」をチェックするヘルパーを作成できます
次に、ヘルパーをサブ式として使用します
# #unless
unless
ヘルパーは、if
ヘルパーの逆として使用できます。式が偽の値を返した場合、そのブロックがレンダリングされます。
現在のコンテキストで`license`をルックアップした結果が偽値の場合、Handlebarsは警告を表示します。それ以外の場合は、何も表示しません。
# #each
組み込みの`each`ヘルパーを使用して、リストを反復処理できます。ブロック内では、`this`を使用して、反復処理されている要素を参照できます。
このコンテキストで使用すると
結果は次のようになります
現在のコンテキストを参照するには、任意のコンテキストで`this`式を使用できます。
リストが空の場合にのみ表示される`else`セクションをオプションで指定できます。
`each`でアイテムをループ処理する場合、オプションで`{{@index}}`を使用して現在のループインデックスを参照できます。
さらに、オブジェクトの反復処理では、`{{@key}}`は現在のキー名を参照します。
配列を反復処理する場合、反復処理の最初と最後のステップは、`@first`および`@last`変数によって示されます。
ネストされた`each`ブロックは、深さベースのパスを介して反復変数にアクセスできます。たとえば、親インデックスにアクセスするには、`{{@../index}}`を使用できます。
# #with
`with`ヘルパーを使用すると、テンプレート部分の評価コンテキストを変更できます。
このコンテキストで使用すると
結果は次のようになります
`with` は、ブロックパラメータと共に使用して、現在のブロック内で既知の参照を定義することもできます。上記の例は、以下のように変換できます。
これにより、複雑なテンプレートで `../` を使った階層的な参照よりも明確なコードを提供できる可能性があります。
渡された値が空の場合にのみ表示される `{{else}}` セクションをオプションで指定できます。
# ルックアップ
`lookup` ヘルパーを使用すると、Handlebars 変数を使用して動的にパラメータを解決できます。
これは、配列のインデックスの値を解決する場合に便利です。
また、入力データに基づいてオブジェクトのプロパティをルックアップするためにも使用できます。以下は、`lookup` を部分式で使用して、プロパティ値に基づいて評価コンテキストを別のオブジェクトに変更する、より複雑な例です。
# ログ
`log` ヘルパーを使用すると、テンプレートの実行中にコンテキストの状態をログに記録できます。
これは、カスタムログを実行するためにオーバーライドできる `Handlebars.logger.log` に委任されます。
このメソッドには任意の数の引数を渡すことができ、すべてロガーに転送されます。
ログレベルは、レベルハッシュパラメータを使用して設定できます。サポートされている値は、debug、info、warn、および error です。省略した場合、デフォルト値は info です。
ロギングは、レベルと `Handlebars.logger.level` に設定された値(デフォルトは `info`)に基づいて条件付きで実行されます。現在のレベル以上のすべてのログステートメントが出力されます。