如何在Handlebars模板中使用内联条件表达式?
有一种方法可以在“原生”的方式做到这一点吗?我的意思是,没有注册自定义助手?
例如,我一直在玩代码(带括号而没有它们):
<select name="alignment">
<option value="left" {{ #if (options.text_alignment == 'left') }}selected="selected"{{ /if }}>Left</option>
<option value="center" {{ #if (options.text_alignment == 'center') }}selected="selected"{{ /if }}>Center</option>
<option value="right" {{ #if (options.text_alignment == 'right') }}selected="selected"{{ /if }}>Right</option>
</select>
但它根本不起作用并抛出错误:
Error: Parse error on line 20:
...ion value="left" {{ #if (options.text_al
-----------------------^
Expecting 'ID', 'DATA', got 'INVALID'
[Break On This Error]
throw new Error(str);
那么,我如何能够以if/else
结构或经典三元运算符(var == value)?'yes':'no'
的形式获得内联条件语句
提前致谢。
最后,我能够做到这一点,但我要以一种不太好的方式说出来:(
我注册了一个自定义助手,如下所示:
// Need to mark selected option inside a select.
Handlebars.registerHelper('select', function(variable, value) {
if (variable == value) {
return new Handlebars.SafeString('selected=selected');
}
else {
return '';
}
});
这个自定义助手可以像这样使用:
{{select option 'right'}}
其中option
是要测试的变量,'right'
测试它的值。
如果以后任何人都有一个很好的解决方案,也适用于radios
和checkboxes
,请添加答案,我将很乐意投票给他们:D
据我所知,这是唯一可以在不注册自定义帮助程序的情况下完成此操作的方法。
<div class="message {{if isImportant 'important' 'unimportant'}}"></div>