有条件在 Nunjucks 宏中不起作用

问题描述

我正在使用 Nunjucks(与 Eleventy)并且一直在重构一些导航 html 以简化事情。我已经用下面定义的宏替换了所有的“a”导航标签

{% macro link(path,label,level) %}
  <!-- path = '{{ path }}/',page.url = '{{ page.url }}' -->
  <a href="{{ path }}/index.html"
     class="level_{{ level }} {{ 'current' if '{{path}}/' == page.url }}"><span>{{ label }}</span></a>
{% endmacro %}

我现在发现以前运行良好的“if”语句在宏中使用时不再起作用。其目的是为指向用户当前所在页面链接分配“当前”类。

注意宏中的注释。这是一个测试,所以我可以看到被比较的值是什么。奇怪的是,测试表明这些值没有任何问题,但“if”语句仍未运行。例如,这是当前页面(应分配“当前”类)的链接的注释中出现的内容的示例:`。如您所见,这两个值是相同的。那么为什么“if”测试会失败?

解决方法

好的,问题似乎出在插值上。改成这样就可以了:

{% macro link(path,label,level) %}
  <a href="{{ path }}/index.html"
     class="navLink level_{{ level }} {{ 'current' if (path+"/" == page.url) }}"><span>{{ label }}</span></a>
{% endmacro %}

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...