3

我已经在各个方向绞尽脑汁,但仍然没有解决方案。也许有人有一些建议?

我在使用 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像 Jinja2 这样的 for 循环,Nunjucks 的变量是有范围的(所以我不能设置在if/else语句中修改的类似哨兵的变量),我也不能附加到数组以便我可以用作array.length确定我是否应该打印该<li></li>行的一种方式。

也许有人有一个聪明的解决方案?

4

1 回答 1

1

我认为类似哨兵的变量不会受到范围的影响:

{% 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 %}
于 2017-07-14T15:07:27.967 回答