45

次のコードをどのように変更して機能させますか? 問題は this == 'some message' 式です:

<ul>
  {{#each errors}}
    {{#if (this == 'some message') }}
    <li>Status</li>
    {{else}}
    <li>{{this}}</li>
    {{/if}}
  {{/each}}
</ul>
4

3 に答える 3

95

最も簡単な方法は、カスタムif_eqヘルパーを追加することです。

Handlebars.registerHelper('if_eq', function(a, b, opts) {
    if(a == b) // Or === depending on your needs
        return opts.fn(this);
    else
        return opts.inverse(this);
});

次に、テンプレートを調整します。

{{#if_eq this "some message"}}
    ...
{{else}}
    ...
{{/if_eq}}

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

エントリが単純な文字列でない場合errorsは、「is this some message」フラグをそれらに追加して、標準を使用できます{{#if}}(プロパティを文字列に直接追加してもうまくいかないことに注意してください)。

for(var i = 0; i < errors.length; ++i)
    errors[i] = { msg: errors[i], is_status: errors[i] === 'some message' };

と:

{{#if is_status}}
    <li>Status</li>
{{else}}
    <li>{{msg}}</li>
{{/if}}

デモ: http://jsfiddle.net/ambiguous/9sFm7/

于 2013-02-26T17:05:04.960 に答える
11

古い質問ですが、Elving のSwag Handlebars ヘルパー ライブラリを使用する場合は、ヘルパーisとを使用できますisnt

于 2014-03-07T09:44:12.527 に答える