带上下文的导入模板似乎不起作用

时间:2016-02-24 17:13:49

标签: json jinja2 nunjucks

我最近一直试图抓住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" %}

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

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

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

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

虽然它不起作用但我不明白为什么。 Jinja2文档似乎暗示它会,但我不能使用Nunjucks来工作,这是否可能?

编辑:我还应该补充说,模板是在gulp中预呈现的,因此最终结果只是平面HTML。

1 个答案:

答案 0 :(得分:1)

好的,我找到了解决方法。它并不像我想的那么干净,但它能完成这项工作。

我只是一个普通的包含声明:

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

但在它上面设置一个变量如下:

{% set context = contentIntro %}

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