javascript - Mustache - 有条件地从数组数据渲染列表

标签 javascript mustache handlebars.js

我有一个现有的应用程序,它使用 Mustache.js 进行模板化,并且我需要有条件地从来自服务器的数组数据 (json) 渲染列表。 mustache 可以做到这一点吗?

一些示例数据:

"Preferences": ["pref-red", "pref-blue"]

很容易通过以下方式输出:

<ul class="plain">
    {{#Preferences}}
    <li>{{.}}</li>
    {{/Preferences}}
</ul>

但我真正想做的是根据返回的任何首选项数据有条件地渲染静态列表的适当部分。一些非常愚蠢的伪代码:

<ul class="plain">
    {{#Preferences}}
        {{if pref-red}}<li class="icon red bell">Red</li>{{/if}}
        {{if pref-green}}<li class="icon green car">Green</li>{{/if}}
        {{if pref-blue}}<li class="icon blue cat">Blue</li>{{/if}}
        {{if pref-yellow}}<li class="icon yellow flower">Yellow</li>{{/if}}
        {{if pref-purple}}<li class="icon purple house">Purple</li>{{/if}}
    {{/Preferences}}
</ul>

在这种情况下,浏览器中的输出为:

<ul class="plain">
    <li class="icon red bell">Red</li>
    <li class="icon blue cat">Blue</li>
</ul>

我知道 Mustache 没有 if 条件,但这可以在 Mustache 中实现吗?如果可能的话,我想将其保留给 Mustache(减少、重复使用、回收)。

最佳答案

不,Mustache 无法用您的原始数据来实现这一点。

您的两个选择:

  • 转换您的输入数据,以便 Mustache 可以呈现它。
  • 更改渲染引擎。您自己已将handlebars.js 标记添加到您的问题中:您已经有了答案。

关于javascript - Mustache - 有条件地从数组数据渲染列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26245181/

相关文章:

javascript - 诗农 stub 错误: "Attempted to wrap post which is already wrapped" even though I'm restoring

javascript - 循环范围 : 1 to 1000 的 Json mustache

javascript - 是否不需要循环执行executeSql命令的结果?

javascript - 无法实现 mustache js 来显示信息

javascript - Meteor 和 Handlebars #each 迭代对象

node.js - Handlebars with Node.js,预编译错误

javascript - Alpine JS 表格数据绑定(bind)

javascript - 在javascript中通过id调用元素

javascript - jquery 的语义选项卡和 Handlebars 问题,选项卡内容未变为事件状态

javascript - JSON 日期成为今天的日期?