胡子渲染列表如果不为空[重复]

Posted

技术标签:

【中文标题】胡子渲染列表如果不为空[重复]【英文标题】:Mustache render list if not empty [duplicate] 【发布时间】:2012-10-15 23:18:13 【问题描述】:

仅当列表对象不为空时,我想使用 Mustache 来呈现 html 无序列表。所以我想:

<ul>
    <li>item 1</li>
    <li>item 2</li>
</ul>

如果列表有元素,什么都没有如果列表是空的(甚至没有 ul 标签)

我该怎么做?

编辑:我的数据结构是:

 "list": ["first item", "second item"] 

【问题讨论】:

我相信这就是你要找的***.com/questions/10102931/… 这是一种有趣的方法,但我希望有一种方法可以在不修改我的数据结构的情况下做到这一点 能否将您的数据结构添加到您的问题中? 可能与***.com/questions/11653764/…重复 【参考方案1】:

如果您不想或不能重新格式化您的数据,您也可以在渲染&lt;ul&gt; 标签之前检查items.length。有些人对此不以为然,但这绝对是迈克答案的替代方案。

#items.length
    <ul>
        items
            <li>property</li>
        /items
    </ul>
/items.length

【讨论】:

如果您使用的是 Java 版本,则为 .size 我用的是别人的api,改不了。 .length 为我工作。 刚刚在trymustache.com 上尝试过这个解决方案,我收到以下错误: 小胡子错误:87 处的未封闭部分“items.length” @broox 你少了一个'#',#items 正如***.com/questions/11653764 中指出的那样,#items.0.../items.0^items.0.../items.0 可能会做得更好。【参考方案2】:

您需要将数据结构重新格式化为:


    "list": 
        "items": ["first item", "second item"]
    

你的 Mustache 模板现在是这样的

#list
    <ul>
        #items
            <li>.</li>
        /items
    </ul>
/list

我制作了一个视频来解释 Mustache 的工作原理,以及如何使用 phpjavascript 来实现它。你可以在这里找到它:http://mikemclin.net/mustache-templates-for-php-and-javascript/

【讨论】:

要求人们重新格式化他们的数据结构以适应模板语言似乎有点不合理。 我同意。这就是为什么我个人会选择不同的模板语言。但是,如果您想使用 Mustache,这就是方法。我更喜欢 *** 的解决方案,但我不确定 length 属性是否始终可用。我认为这可能是 Javascript 实现添加的增强功能。我在 Mustache 手册中找不到任何提及:mustache.github.io/mustache.5.html。 为模板创建模型相对容易,源于您的数据限制,但根据需要进行修改。这样做的好处是,转换是在易于调试的实际编程语言的代码中执行的。 复杂的逻辑,例如Thymeleaf 或 Angular 正是让人们渴望干净简单的东西的原因。不过,我知道,列表元素的伪值“first”和“last”应该很容易包含,而不需要让 Mustache 成为另一个 Velocity 或 JSP。

以上是关于胡子渲染列表如果不为空[重复]的主要内容,如果未能解决你的问题,请参考以下文章

仅当对象在一行上不为空时才设置属性[重复]

两个数组的递归组合项(不为空或重复),使用 Java

如果不为空,则 NullToVisibilityConverter 使可见

仅在其不为空的情况下更新 [重复]

如果使用我的服务使用Java 8 lambda / streams列表不为空,如何从列表中删除每个元素

如何等到列表不为空? - 颤振期货