NUNJUKS: цикл For для создания списка переменных, но вместо этого создает строки - PullRequest
0 голосов
/ 25 февраля 2019

Я использую nunjucks для создания файла экспорта JSON.У меня есть список переменных, которые имеют одно и то же имя, за исключением возрастающего числа в конце.Я использую цикл for следующим образом:

{% for i in range(1, 6) -%}
{% set items =  ["{{ answer",i, " }}"] %}
    "Solution{{ i }}" : "{{ items | join }}",
{%- endfor %} 

Я хочу, чтобы answer1 захватил переменную answer1, но вместо этого он дает мне строку "{{anwser1}}".

Есть идеи, как использовать цикл for для указания на каждую переменную (answer1, answer2, answer3 и т. Д.)?

1 Ответ

0 голосов
/ 26 февраля 2019

Вы можете добавить некоторую глобальную функцию или фильтр, чтобы получить доступ к контексту (области видимости) по имени.

const nunjucks = require('nunjucks');
const env = new nunjucks.Environment();

env.addGlobal('getContext', function (prop) {
  return prop ? this.ctx[prop] : this.ctx;
});

const tpl = `{% for i in range(1, 4)%} {{ getContext('a' + i) }} {% endfor %}`;
const output = env.renderString(tpl, {a1: 10, a2:20,  a3: 30, b: 1, c: 2});
console.log(output);
...