如何使用Handlebars三元助手?

时间:2015-04-03 23:36:45

标签: handlebars.js assemble

this answer之后,我写了一个像

这样的帮手
module.exports.register = function (Handlebars) {
    Handlebars.registerHelper('ternary', function(test, yes, no) {
        return test ? yes : no;
    });
};

我确定帮助程序已加载并正在定义,但无法确定使用它的语法。我尝试使用它像

<div>{{ternary(true, 'yes', 'no')}}</div>

但是这会产生assemble构建错误

Warning: Parse error on line 10:
...<div>{{ternary(true, 'yes',
----------^
Expecting 'ID', 'DATA', got 'INVALID' Use --force to continue.

使用这样的助手的正确语法是什么?

4 个答案:

答案 0 :(得分:11)

Handlebars helpers:http://handlebarsjs.com/#helpers不要遵循模板中的JavaScript语法。您可以像这样使用它们:

<div>{{ternary true "yes" "no"}}</div>

答案 1 :(得分:6)

立即更新7/14/2017

由于这两个字符串在JavaScript中都被视为truthy值,因此我将代码更改为以下内容:

{{input value=email placeholder="Enter Email" class="form-control"
    disabled=(if isResetting 1 0)
}}

============================

原始答案

如果{{if}}尝试使用内联怎么样?

{{if user.isAdmin "True" "False" }}

答案 2 :(得分:1)

根据文档https://handlebarsjs.com/guide/builtin-helpers.html#if

,这对我有用
{{#each langs }}
    <a class="navbar-item {{#if active}}is-active{{else}}{{/if}}" href="#{{code}}">
        {{label}}
    </a>
{{/each}}

答案 3 :(得分:0)

在我看来,车把不够胜任?我试过这个(经过多次不同的尝试);

<li class="{{#if meta.name === 'dashboard'}} active {{else}} undefined">

不工作:s

看起来你不能用字符串来做。也许只有布尔值。