如何使用Handlebars三元运算符助手?

13

根据这个答案,我编写了一个类似的帮助程序,如下:


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.

如何使用类似的helper的正确语法?

4个回答

16

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

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

6
更新于 2017 年 7 月 14 日:
由于 JavaScript 中两个字符串都被视为真值(truthy value),因此我已将我的代码更改为以下内容:
{{input value=email placeholder="Enter Email" class="form-control"
    disabled=(if isResetting 1 0)
}}

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

原始答案

尝试使用内联 if {{if}} 如何?

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

3

0

在我看来,Handlebars 不够强大,无法胜任这项任务。我尝试了很多不同的方法,包括以下代码:

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

出问题了 :s

看起来你不能用字符串处理它。也许只能使用布尔值。


1
我最初使用了几天的 Pug,但很快就发现它有很多缺点。现在 Handlebars 似乎也有一些问题。接下来要尝试... 有什么建议吗? :) - Kristoffer Frisell Jarnevid
你需要一个辅助函数来解决这个问题 - 可以参考 https://dev59.com/WWox5IYBdhLWcg3w95E9#16315366 的示例。此外,你的示例缺少一个闭合的 {{/if}}。建议使用 React、Vue 等现代框架。 - ptim

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接