2

如何在 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'

提前致谢。

4

3 回答 3

9

最后,我能够做到这一点,但我不得不说,以一种不好的方式:(

我注册了一个自定义助手,如下所示:

    // 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

于 2013-08-10T21:29:56.693 回答
3

内联 if 语句

<div class="message {{if isImportant 'important' 'unimportant'}}"></div>
于 2019-04-18T12:58:55.367 回答
0

据我所知,这是您无需注册自定义助手即可完成此操作的唯一方法。

Handlebars.js 否则如果

于 2013-08-10T20:27:57.617 回答