0

サーバーから渡されたデータがあります。

<p>データ項目がない場合、コンテナを存在させたくありません。ただし、複数のデータ項目または 1 つのデータ項目が存在する可能性があります。存在する場合は、<p>ラッパーが必要です。

#ifor理想的には、任意の数の引数を受け入れるヘルパーを探しています。これは可能ですか?

{{#ifor firstname||lastname||nickname||age}}
<p>
  {{#if firstname}}
    <span class="firtname">{{firstname}}</span>
  {{/if}}

  {{#if lastname}}
    {{lastname}}
  {{/if}}

  {{#if age}}
   Age: {{age}}
  {{/if}}

  {{#if nickname}}
    - ( {{type}} )
  {{/if}}
</p>
{{/if}}
4

1 に答える 1

1

簡単な解決策は、OR 演算子を使用せずに、テストしたい属性を受け入れるヘルパーを作成することです。次に、引数を繰り返し処理し、それらが true test に一致するかどうかを確認します。

Handlebars.registerHelper('ifor', function() {
    var l, opts;

    opts = Array.prototype.pop.call(arguments);
    for (l = arguments.length-1; l>=0; l--) {
        // test against undefined if you prefer
        //if (typeof(arguments[l])!=='undefined')

        if (arguments[l])
            return opts.fn(this);
    }

    return opts.inverse(this);
});

そしてフィドルhttp://jsfiddle.net/G5Vhc/1/

于 2013-08-13T15:34:39.863 に答える