1

ハンドルバーで可能な AND ステートメントを使用して、そのようなものを作成できるかどうか疑問に思っています。そうでない場合、同じ結果を得る最良の方法は何ですか。


これは JavaScript コンテキストです。

{
  title: "My first post!",
  author: {
    firstName: "Charles",
    lastName: "Jolley"
  }
}

これは HTML コンテキストです。

<div class="entry">
  {{#if firstName && lastName}}
  <h1>{{firstName}} {{lastName}}</h1>
  {{/if}}
</div>
4

1 に答える 1

2

いいえ、ネイティブ{{#if}}はその構文を理解していません。ただし、そのようなもののために独自のヘルパーを簡単に追加するargumentsことができます.

唯一のトリッキーな部分は、ヘルパーへのブロック引数が常に最後に来ることに注意することです。

次のような簡単な方法でうまくいきます。

Handlebars.registerHelper('if_all_true', function() {
    var args  = Array.prototype.slice.call(arguments);
    var block = args.pop();
    for(var i = 0; i < args.length; ++i)
        if(!args[i])
            return block.inverse(this);
    return block(this);
});

デモ: http://jsfiddle.net/ambiguous/jMLcZ/

于 2012-07-31T16:55:16.373 に答える