我有一个列表:
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>
我将列表分成6列,将其显示为如下表:
{%- for row in list|batch(6, ' ') %}
<tr>
{%- for column in row %}
<td>{{ column }}</td>
{%- endfor %}
</tr>
{%- endfor %}
但是我不知道如何做上面描述的事情。有人有主意吗?
答案 0 :(得分:1)
您可以使用loop.index
来判断循环中迭代的编号:
{%- for row in list|batch(6, ' ') %}
<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 %}
答案 1 :(得分:1)
如果不需要span
包装器,则代码可以写为
{% set classes = {4: 'label label-info', 5: 'label label-danger', 6: 'label label-primary'} %}
{%- for row in list | batch(6, ' ') %}
<tr>
{% for column in row %}
<td class = "{{classes[loop.index]}}">{{column}}</td>
{% endfor %}
</tr>
{% endfor %}
P.S。 Imho,{%-
和-%}
阻塞了代码。更好的方法是在页面生成结束时使用html beautifier。如果您使用Express
,请参阅express-beautify中间件。