Non è possibile eseguire questa operazione con un helper personalizzato poiché gli helper ifbars di Handlebars comprendono solo due parti: la parte "if" e la parte "else". È possibile annidare le cose però:
{{#if type.one}}
do something ... IF
{{else}}
{{#if type.two}}
do something ... ELSE IF
{{else}}
{{#if type.three}}
...
{{else}}
...
{{/if}}
{{/if}}
{{/if}}
Questo genere di cose otterrà brutto veloce quindi probabilmente non si vuole farlo. Un approccio migliore sarebbe (come al solito con Handlebars) essere spingere la logica nel tuo JavaScript in modo che al massimo uno di type.one
, type.two
, type.three
, ... sia vero; allora si potrebbe:
{{#if type.one}}
...
{{/if}}
{{#if type.two}}
...
{{/if}}
{{#if type.three}}
...
{{/if}}
Se avete un sacco di opzioni per type
o se gli organi nel vostro {{#if}}
s sono complicate, si potrebbe passare a parziali. Dovresti aggiungere un helper personalizzato per creare un nome parziale basato su una variabile di modello; qualcosa di simile:
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 '';
});
e poi, assumendo i tuoi parziali sono tutti registrati e costantemente prende il nome, si potrebbe dire:
{{show_type type}}
fonte
2012-10-31 19:31:40
questo dovrebbe essere la risposta 'nuova' accettato nel 2016. – Jeff