我已经绞尽脑汁了,但还是没有解决办法。也许有人有什么建议?
我在一个使用Nunjucks作为模板引擎的ExpressJS应用程序中有以下块。
{%- for course in courses -%}
{%- for rcourse in report.courses -%}
{%- if rcourse.id == course.id -%}
<li {{ 'class="column-pre"' if loop.last else ''}}><span>Cool!</span></li>
{%- else -%}
<li></li>
{%- endif -%}
{%- endfor -%}
{%- endfor -%}我的问题:当条件证明事实时,需要break内部的report.courses循环。基本上,当我打印非空的<li>行时,我需要跳到courses循环的下一个迭代。
我知道,Nunjucks没有break for循环,比如Jinja2,Nunjucks的变量有作用域(所以我不能设置一个在if/else语句中被修改的类似哨位的变量),也不能附加到数组中,这样就可以使用array.length来确定是否应该打印<li></li>行。
也许有人有个聪明的解决方案?
发布于 2017-07-14 15:07:27
我认为类似于哨兵的变量不会受到范围界定的影响:
{% for course in courses %}
{% set searchrcourse = true %}
{% for rcourse in report.courses %}
{% if searchrcourse %}
{% if rcourse.id == course.id %}
<li {{ 'class="column-pre"' if loop.last else ''}}><span>Cool!</span></li>
{% set searchrcourse = false %}
{% else %}
<li></li>
{% endif %}
{% endif %}
{% endfor %}
{% endfor %}https://stackoverflow.com/questions/33965491
复制相似问题