Handlebars の if-ish ヘルパーは "if" 部分と "else" 部分の 2 つの部分しか理解できないため、カスタム ヘルパーではこれを行うことはできません。ただし、ネストすることはできます。
{{#if type.one}}
do something ... IF
{{else}}
{{#if type.two}}
do something ... ELSE IF
{{else}}
{{#if type.three}}
...
{{else}}
...
{{/if}}
{{/if}}
{{/if}}
そのようなことはすぐに厄介になるので、おそらくやりたくないでしょう。より良いアプローチは (Handlebars でいつものように) JavaScript にロジックをプッシュして、最大でもtype.one
, type.two
, type.three
, ... の 1 つが true になるようにすることです。次に、次のことができます。
{{#if type.one}}
...
{{/if}}
{{#if type.two}}
...
{{/if}}
{{#if type.three}}
...
{{/if}}
多くのオプションがあるtype
場合、または のボディ{{#if}}
が複雑な場合は、パーシャルに切り替えることができます。ただし、テンプレート変数に基づいて部分的な名前を作成するには、カスタム ヘルパーを追加する必要があります。このようなもの:
Handlebars.registerHelper('show_type', function(type) {
var types = ['one', 'two', 'three'];
var partial;
for(var i = 0; i < types.length; ++i) {
if(!type[types[i]])
continue;
partial = '_partial_' + types[i];
break;
}
if(partial)
return Handlebars.partials[name](this);
else
return '';
});
そして、パーシャルがすべて登録され、一貫した名前が付けられていると仮定すると、次のように言えます。
{{show_type type}}