13

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

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

如果列表有元素,如果列表为空则没有元素(甚至没有 ul 标签)

我怎样才能做到这一点?

编辑:我的数据结构是:

{ "list": ["first item", "second item"] }
4

2 回答 2

26

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

{{#items.length}}
    <ul>
        {{items}}
            <li>{{property}}</li>
        {{/items}}
    </ul>
{{/items.length}}
于 2013-10-17T12:50:37.470 回答
11

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

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

你的 Mustache 模板现在是这个

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

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

于 2013-03-06T19:06:52.653 回答