Nie można tego zrobić przy użyciu niestandardowego pomocnika, jako że pomocnicy, którzy są pomocnikami, rozumieją tylko dwie części: część "jeśli" i część "inną". Możesz jednak zagnieździć się w jednym miejscu:
{{#if type.one}}
do something ... IF
{{else}}
{{#if type.two}}
do something ... ELSE IF
{{else}}
{{#if type.three}}
...
{{else}}
...
{{/if}}
{{/if}}
{{/if}}
Tego typu rzeczy będą szybko nieprzyjemne, więc prawdopodobnie nie chcesz tego robić. Lepszym rozwiązaniem byłoby (jak zwykle w przypadku Handlebars) przeniesienie logiki do JavaScript tak, aby co najwyżej jedna z type.one
, type.two
, type.three
, ... byłaby prawdziwa; następnie można:
{{#if type.one}}
...
{{/if}}
{{#if type.two}}
...
{{/if}}
{{#if type.three}}
...
{{/if}}
Jeśli masz wiele opcji dla type
lub jeżeli organy w swoim {{#if}}
s są skomplikowane, można przełączyć się podszablonów. Trzeba dodać niestandardowego pomocnika, aby zbudować częściową nazwę opartą na zmiennej szablonu; coś takiego:
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 '';
});
a następnie, zakładając swoje partials są zarejestrowane i konsekwentnie nazwie, można powiedzieć:
{{show_type type}}
powinno to być 'nowe' odpowiedź przyjęta w 2016 roku. – Jeff