如何在Handlebar模板中使用内联条件表达式?
有没有办法用“原生”的方式做到这一点呢?我的意思是,没有注册一个定制的帮手?
例如,我一直在玩代码(带括号和不带括号):
<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'
形式的内联条件语句呢
提前谢谢。
发布于 2013-08-11 05:29:57
最后,我终于能够做到这一点,但我不得不以一种不友好的方式说:
我注册了一个自定义帮助器,如下所示:
// 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
发布于 2019-04-18 20:58:55
<div class="message {{if isImportant 'important' 'unimportant'}}"></div>
发布于 2013-08-11 04:27:58
据我所知,这是您可以在不注册自定义助手的情况下完成此操作的唯一方法。
https://stackoverflow.com/questions/18166041
复制相似问题