【发布时间】:2012-11-24 06:38:42
【问题描述】:
到目前为止mustache 很棒,但现在似乎没有逻辑功能。假设,我必须渲染模板,其中我可以有用户的电子邮件和姓名。
如果电子邮件和姓名都存在,我希望我的渲染结果是:
<a href="mailto:EMAIL">NAME</a>
如果存在电子邮件,但不存在姓名,则结果将是:
<a href="mailto:EMAIL">EMAIL</a>
如果只存在名称,则模板应呈现为:
NAME
所以现在我必须这样做:
{{#email}}<a href="mailto:{{email}}">{{#name}}{{name}}{{/name}}{{^name}}{{email}}{{/name}}</a>{{/email}}{{^email}}{{name}}{{/email}}
这太丑了!而这只是3个条件!如果我需要更多怎么办?我觉得在mustache 中应该有另一种方式来做同样的事情。还是不应该?
所以,小胡子开发人员认为没有逻辑是一件好事,但我有一个论点。大多数时候我们需要检查模板中的一些变量(大多数时候我们只需要检查是否存在)。所以我会做这样的事情:
{% if email %}{{ email }}{% else %}{{ name }}{% endif %}
这样看起来就更全面了
{{#email}}{{email}}{{/email}}{{^email}}{{name}}{{/email}}
不是吗?
如果我也需要查看name:
{% if email %}{{email}}{% elif name %}{{name}}{% else %}Anonymous{% endif %}
对
{{#email}}{{email}}{{/email}}{{^email}}{{#name}}{{name}}{{/name}}{{^name}}Anonymous{{/name}}{{/email}}
如果没有,您会建议在javascript 中使用另一个模板库来呈现模板吗?与jQuery(jQuery-plugin)集成是一个优势,但不是必需的——我可以自己做。
谢谢。
【问题讨论】:
-
一些 Mustache 实现接受
{{#foo}}...{{^foo}}...{{/foo}}语法,它更短一些。有些人甚至接受{{#foo}}...{{^}}...{{/}}。然而,当然,Mustache 仍然很冗长。
标签: jquery templates conditional-statements mustache