【问题标题】:import template with context doesn't seem to be working带有上下文的导入模板似乎不起作用
【发布时间】:2016-02-25 02:04:57
【问题描述】:

我最近一直在尝试掌握 nunjucks,我以前使用过车把,所以学习曲线并没有那么糟糕。但是有一件事我似乎无法工作:

我有一个 JSON 文件,其中包含以下数据:

"contentIntro" : {
    "componentClass" : "c-global-header",
    "title" : "Welcome Firstname Surname,",
    "subtitle" : "New applications:",
    "bodyCopy" : "You can create, edit and save the draft application as many times as you need before submitting it for assessment.",
    "ctaType" : "text",
    "ctaText" : "View the list",
    "ctaURL" : "#"
  }

这存在于一个包含其他页面元素的 JSON 文件中,但它只是我感兴趣的 contentIntro 上下文。

如果我包含这样的部分:

{% include "components/c-headed-text.nunjucks" %}

然后我可以在该部分(例如{{ contentIntro.title }})中使用点表示法访问 JSON 数据,但这不是很灵活,并且它使我无法在页面上拥有多个相同的部分类型。

理想情况下,我想做的是像这样导入部分:

{% import "components/c-headed-text.nunjucks" as contentIntro %}

然后在模板中,我可以使用 {{ title }} 访问 JSON 数据,因为它已经知道导入的上下文。

很烦人,虽然它不起作用,我不明白为什么。 Jinja2 文档似乎暗示它会,但我无法使用 Nunjucks 让它工作,这甚至可能吗?

编辑:我还应该补充一点,模板是在 gulp 中预渲染的,因此最终结果只是纯 HTML。

【问题讨论】:

    标签: json jinja2 nunjucks


    【解决方案1】:

    好的,我找到了解决方法。它不像我想要的那样干净,但它可以完成工作。

    我只是一个普通的包含语句:

    {% include "components/c-headed-text.nunjucks" %}
    

    但在其上方设置一个变量,如下所示:

    {% set context = contentIntro %}
    

    然后在部分内部我可以使用{{ context.title }},它就像一个魅力!

    【讨论】:

    • 您有没有找到更好的方法来做到这一点?
    • 恐怕不会,不会。
    猜你喜欢
    • 2023-03-16
    • 2023-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-19
    相关资源
    最近更新 更多