【问题标题】:Variable not expanded inside an included selmer template变量未在包含的 selmer 模板内展开
【发布时间】:2021-01-20 01:25:09
【问题描述】:

我有一个顶级模板,我想在 for 循环中使用“片段”模板,但我无法传入变量值:

  {% for item in coll %}
    {% include "fragment.html" with name="slack" item=item %}
  {% endfor %}

itemname 然后在 fragment.html 模板中使用:

<div>
  <label>
    <input
      title="{{item.id}}"
      id="{{name}_{{item.id}}_active"
      name="{{name}}-{{item.id}}_active"
...
    />

虽然name 参数已正确扩展(其值在父模板中硬编码),但item 参数未正确扩展(其值按原样传入)。

我需要为此使用不同的语法还是它不受支持?

【问题讨论】:

  • 这个问题和Clojure没有任何关系。
  • Selmer 是一个 clojure 库,所以我猜是的。

标签: clojure luminus selmer


【解决方案1】:

include 标签拼接在包含的模板中。这意味着父模板范围内的任何变量都可用于包含的模板。 with 运算符允许您提供不解释的默认值。说item=item实际上就是说item|default:"item",也就是说item被重新定义为"item"

https://github.com/yogthos/Selmer#including-templates

【讨论】:

  • 太好了,感谢您的澄清。我自己通过实验发现了这一点。确实,width 标签正是我想要的。
  • 我又搞砸了一点,我不完全确定为什么要为您传递文字字符串“item”。对我来说,它传递了item 变量的值。无论如何,你不需要说item=item
  • 哦,是的,明确地传递它真的很令人困惑,因为它总是从外部范围获取item 变量的值。所以最好把它去掉,只在周围的上下文中使用with
猜你喜欢
  • 2015-03-22
  • 1970-01-01
  • 2015-07-05
  • 2023-03-07
  • 1970-01-01
  • 2015-06-21
  • 1970-01-01
  • 2013-04-05
  • 1970-01-01
相关资源
最近更新 更多