首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Handlebar:本机内联条件表达式还是等效表达式?

Handlebar:本机内联条件表达式还是等效表达式?
EN

Stack Overflow用户
提问于 2013-08-11 04:25:46
回答 3查看 12.8K关注 0票数 2

如何在Handlebar模板中使用内联条件表达式?

有没有办法用“原生”的方式做到这一点呢?我的意思是,没有注册一个定制的帮手?

例如,我一直在玩代码(带括号和不带括号):

代码语言:javascript
运行
复制
<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>

但它根本不起作用,并抛出错误:

代码语言:javascript
运行
复制
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'形式的内联条件语句呢

提前谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-08-11 05:29:57

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

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

代码语言:javascript
运行
复制
// 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 '';
    }
});

此自定义帮助器可以像这样使用:

代码语言:javascript
运行
复制
{{select option 'right'}}

其中option是要测试的变量,'right'是要测试的值。

如果以后有人提出了一个也适用于radioscheckboxes的很好的解决方案,请添加答案,我很乐意投票支持他们:D

票数 9
EN

Stack Overflow用户

发布于 2019-04-18 20:58:55

inline if statement

代码语言:javascript
运行
复制
<div class="message {{if isImportant 'important' 'unimportant'}}"></div>
票数 3
EN

Stack Overflow用户

发布于 2013-08-11 04:27:58

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

Handlebars.js Else If

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18166041

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档