Sie können dies nicht mit einem benutzerdefinierten Helfer tun, da Lenker if-ish Helfer nur zwei Teile verstehen: den "if" Teil und den "else" Teil. Sie können Dinge verschachteln:
{{#if type.one}}
do something ... IF
{{else}}
{{#if type.two}}
do something ... ELSE IF
{{else}}
{{#if type.three}}
...
{{else}}
...
{{/if}}
{{/if}}
{{/if}}
Diese Art von Sache wird böse schnell, so dass Sie wahrscheinlich nicht wollen, dass zu tun. Ein besserer Ansatz wäre (wie üblich bei Handlebars), die Logik in Ihr JavaScript zu übertragen, so dass höchstens eines von type.one
, type.two
, type.three
, ... wahr wäre; dann könnten Sie:
{{#if type.one}}
...
{{/if}}
{{#if type.two}}
...
{{/if}}
{{#if type.three}}
...
{{/if}}
Wenn Sie eine Menge von Optionen für type
oder wenn die Körper in Ihrem {{#if}}
s sind kompliziert haben, Sie zu partials wechseln könnte. Sie müssten einen benutzerdefinierten Helfer hinzufügen, um einen Teilnamen zu erstellen, der auf einer Vorlagenvariablen basiert. so etwas wie dieses:
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 '';
});
und dann Ihre partials vorausgesetzt werden alle registriert und konsequent genannt, könnte man sagen:
{{show_type type}}
dies sollte im Jahr 2016 die 'neue' akzeptierte Antwort sein. – Jeff