如何在Mustache模板中使用三元运算符

7

我有一个场景,在这个场景中,我得到了一个布尔数据类型的{{isdone}}值。

我想要将false值打印为“pending”,将true值打印为“Done”。

我正在使用以下代码,但它没有起作用。

{{isdone}} == false ? "pending" : "Done"

你是用Angular还是其他什么东西在做呢? - mehta-rohan
2
Mustache模板据说是“无逻辑”的,尽管您可以在其中使用if/else语句(有关更多信息,请参见此问题:https://dev59.com/gm025IYBdhLWcg3wZlLd)。我非常怀疑三元运算符在模板中可能是不可能的。 - Seblor
感谢@Seblor,与此同时我也谷歌搜索到了相同的结果。 - Deepesh kumar Gupta
3个回答

2

使用^块表示否则。

您现在可以使用^块来表示elsefalse条件。类似这样的语句应该可以工作:

{{#isdone}}Done{{/isdone}}{{^isdone}}pending{{/isdone}}

或者作为更易读的多行代码块:
{{#isdone}}
Done
{{/isdone}}
{{^isdone}}
pending
{{/isdone}}

1
只要你掌握了上下文数据的控制权,正确的方式是传递另一个变量,该变量事先已经包含了“pending”或“Done”。
如果您无法控制数据,则可能不适合使用Moustache,因为您可能需要模板引擎,在其中添加一些更多逻辑以稍微转换数据。

0
你可能想要为此注册一个名为ternary的辅助函数。
Handlebars.registerHelper("ternary", function (condition, trueValue, falseValue, options) {
   return condition ? trueValue : falseValue;
});

然后在模板中像这样使用它

{{ternary isdone "Done" "pending"}}

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