Nunjucks:在宏中将对象作为参数传递

Kri*_*zta 3 macros prototype templating nunjucks

我想创建一些嵌套宏。一个用于一个部分,在那里我想动态调用任何组件的宏。(在本例中,我要调用的组件是article。)

这是我的部分宏:

  <!-- section.nunjucks -->
  {% macro section(config) %}
    <section class="site__section section">
      {% for item in config %}
        {{ item.macro(item.settings) }}
      {% endfor %}
    </section>
  {% endmacro %}
Run Code Online (Sandbox Code Playgroud)

组件宏:

  <!-- article.nunjucks -->
  {% macro article(settings) %}
    <article class="article {{ settings.classes }}">
      <h1 class="article__title">Hello World</h1>
      <p class="article__body">Lorem ipsum dolor.</p>
    </article>
  {% endmacro %}
Run Code Online (Sandbox Code Playgroud)

我试图在这里称呼它:

{{ section([{'macro': article, 'settings': {'classes': 'article--large'}}]) }}
Run Code Online (Sandbox Code Playgroud)

我收到此位的语法错误:'settings': {'classes': 'article--large'}

settings.classes调用宏时如何作为参数传入settings

Kri*_*zta 5

正如我刚刚发现的,空间在 Nunjucks 中很重要。所以写

{{ section([{ 'macro': article, 'settings': { 'classes': 'article--large' } }]) }}
Run Code Online (Sandbox Code Playgroud)

相反,实际运行时不会出现任何语法错误。