1

Handlebars.java で等価条件とその他の論理条件を比較するにはどうすればよいですか。例えば:

{{#if template_version == "v2" }}
  //do something 
{{ else }}
  //do something
{{/if}}

ありまたはなしのソリューションregisterHelper()は大歓迎です。

4

1 に答える 1

2

==ハンドルバーはすぐに使用できるコンストラクトを提供しないため、チェックを行うヘルパーを作成する必要があり==ます。

次のような単純なヘルパーを作成できます。

    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ました。

今、あなたのテンプレートで:

{{#if_eq template_version "v2" }}
  //do something 
{{ else }}
  //do something
{{/if_eq}}

すべてのオペレーターのヘルパーが必要な場合は、次のようにすることができます。

    Handlebars.registerHelper({
        eq: function (v1, v2) {    
            return v1 === v2;
        },
        ne: function (v1, v2) {
            return v1 !== v2;
        },
        lt: function (v1, v2) {
            return v1 < v2;
        },
        gt: function (v1, v2) {
            return v1 > v2;
        },
        lte: function (v1, v2) {
            return v1 <= v2;
        },
        gte: function (v1, v2) {
            return v1 >= v2;
        },
        and: function (v1, v2) {
            return v1 && v2;
        },
        or: function (v1, v2, opts) {
            return v1||v2;
        }
    });
于 2016-06-21T04:31:03.513 に答える