1

我有一个清单:

list = [a, b, c, 1, 2, 3, a, b, c, 1, 2, 3, a, b, c, 1, 2, 3]

我想将它显示为一个表格,其中每个第 4、第 5 和第 6 个元素都以自己的方式设置样式,例如:

<td><span class="label label-info">1</span></td>
<td><span class="label label-danger">2</span></td>
<td><span class="label label-primary">3</span></td>

我将列表批处理为 6er 行,以将其显示为如下表格:

{%- for row in list|batch(6, '&nbsp;') %}
    <tr>
    {%- for column in row %}
        <td>{{ column }}</td>
    {%- endfor %}
    </tr>
{%- endfor %}

但我不知道如何做我上面描述的事情。有人有想法吗?

4

2 回答 2

1

如果不需要span-wrapper,代码可以写成

{% set classes = {4: 'label label-info', 5: 'label label-danger', 6: 'label label-primary'} %}
{%- for row in list | batch(6, '&nbsp;') %}
    <tr>
    {% for column in row %}
        <td class = "{{classes[loop.index]}}">{{column}}</td>
    {% endfor %}
    </tr>
{% endfor %}

PS Imho,{%--%}阻塞代码。更好的方法是在页面生成结束时使用 html 美化器。如果您使用Express,请参阅express-beautify中间件。

于 2018-09-19T13:06:24.583 回答
1

您可以使用loop.index来判断循环中的迭代次数:

{%- for row in list|batch(6, '&nbsp;') %}
    <tr>
    {%- for column in row %}
        <td>
            {%- if loop.index == 4 %}<span class="label label-info">{% endif -%}
            {%- if loop.index == 5 %}<span class="label label-danger">{% endif -%}
            {%- if loop.index == 6 %}<span class="label label-primary">{% endif -%}
            {{ column }}
            {%- if loop.index in [4, 5, 6] %}</span>{% endif -%}
        </td>
    {%- endfor %}
    </tr>
{%- endfor %}
于 2018-09-17T15:53:55.593 回答