您無法使用Handlebars的自定義幫助程序進行此操作if-ish助手只能理解兩部分:「if」部分和「else」部分。你可以嵌套的東西,但:
{{#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
,......將是真實的;然後你可以:
{{#if type.one}}
...
{{/if}}
{{#if type.two}}
...
{{/if}}
{{#if type.three}}
...
{{/if}}
如果你有很多的type
或者如果你{{#if}}
S中體選項是複雜的,你可以切換到諧音。您必須添加一個自定義幫助器才能根據模板變量構建部分名稱;是這樣的:
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}}
這應該是在2016年的 '新' 接受的答案。 – Jeff