把手:原生内联条件表达式还是等效的?内联if语句

问题描述 投票:2回答:3

如何在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'的形式获得内联条件语句

提前致谢。

if-statement expression inline condition handlebars.js
3个回答
6
投票

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

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

// 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'测试它的值。

如果以后任何人都有一个很好的解决方案,也适用于radioscheckboxes,请添加答案,我将很乐意投票给他们:D


0
投票

据我所知,这是唯一可以在不注册自定义帮助程序的情况下完成此操作的方法。

Handlebars.js Else If


0
投票

inline if statement:

<div class="message {{if isImportant 'important' 'unimportant'}}"></div>
© www.soinside.com 2019 - 2024. All rights reserved.